循环~完数
题目描述
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:
输入
N
输出
? its factors are ? ? ?
1 #include<stdio.h> 2 int main(){ 3 int N; 4 //int sum=0;全局变量出错?? 5 int i,j; 6 scanf("%d",&N); 7 //外循环:做N次循环找N个数中的完数,内循环:找每个数的因子:根据数的不同循环的次数也不同 8 for(i=2;i<=N;i++) 9 { 10 int sum=0; 11 for(j=1;j<i;j++) 12 { 13 if(i%j==0){ 14 sum += j; 15 } 16 } 17 //printf("%d\n",sum); 18 if(i==sum) 19 { 20 printf("%d its factors are",i); 21 for(j=1;j<i;j++){ 22 if(i%j==0){ 23 printf(" %d",j); 24 } 25 } 26 printf("\n"); 27 } 28 } 29 return 0; 30 }
solution:
1 sum变量做全局变量的时候结果输出不了,做循环变量可以正常输出 不理解?
2 因子不等于质因数;因子:能够被本书整除的数就属于因子
3 外循环:做n次循环,找n个数中的完数
第一个内循环:求因子的和
第二个内循环:判断完是否是完数之后,循环输出完数的因子