//完数(一个数等于他的因子之和,例如6=3+2+1)
//题目要求:求某一范围完数的个数
#include<stdio.h> int main(){ int m,n,i,j,k,sum,count=0; scanf("%d %d",&m,&n); for(k=m;k<=n;k++){ sum=0;//在这里要重新复制 for(i=1;i<k;i++){ if(k%i==0){ sum=sum+i; } } if(sum==k){ printf("%d是完数\n",k); count++; } } printf("一共%d个完数\n",count); return 0; }
运行结果:
问题描述:
代码:
#include<stdio.h> int a[4]; int main(){ int i,j,k,sum=0,t; for(i=1234;i<=9876;i++){ a[0]=i/1000; a[1]=i%1000/100; a[2]=i%1000%100/10; a[3]=i%10; t=0; for(j=0;j<4;j++) { for(k=j+1;k<4;k++){ if(a[j]==a[k]) t=1; } } if(t==0){ sum=a[3]*1000+a[2]*100+a[1]*10+a[0]; if(i==sum*4){ printf("%d\n",sum); } } } return 0; }
运行结果:
问题描述:
//亲密数(整数A的全部因子之和不含本身=B,B的全部因子之和不含本身=A)
//求3000之内的全部亲密数
代码:
#include<stdio.h> int main(){ int i,j,k,sum1,sum2,count=0;; for(i=2;i<=3000;i++){ sum1=0; sum2=0; for(j=1;j<i;j++){//求i的因子和sum1 if(i%j==0){ sum1=sum1+j; } } for(k=1;k<sum1;k++){//求sum1因子和sum2 if(sum1%k==0){ sum2=sum2+k; } } if(i<sum1){//开始此处的条件是不等于,结果会出现六对,换成小于就会排除交换过来重复输出的情况 if(sum2==i){ printf("%d %d\n",i,sum1); count++; } } } printf("%d\n",count); return 0; }
运行结果: