思路:
求某范围内每个数的因子,循环语句,公式-%-==0求因子。故一个循环控制范围,还需一个循环求因子。求偶数n的因子,其最大因子等于n/2,奇数的最大因子小于n/2.故可缩小求因子的范围。 #include<stdio.h> int main() { int n,i,j,s; printf("请输入n的取值范围:\n"); scanf("%d",&n); for(i=2;i<=n;i++)//大循环控制次数 { s=0;//保证和初始值为0,放for循环下面也可,但一定要在s+=j前,以防干扰赋值 for(j=1;j<i;j++)//小循环,针对范围内的每一个值,控制求其因子的范围 { if(i%j==0)//求i的因子,j在范围内每增加一次,测试一次j是否是i的因子 s+=j;//将每次求得的因子累加在s中 } if(s==i)//s计算完毕,在大循环下与相对应的i对比值是否相等 { printf("%d its factors are\t",i);//相等则代表对应的i为完全数,输出值,按照书本要求输出部分格式 for(j=1;j<i;j++) //C语言中只有你先让它输出什么就是什么,所以注意格式间不要输出无相关的 { if(i%j==0) //在求完全数的小循环中,再来一个小循环求已知完全数的因子 printf("%d\t",j);//利用循环输出完全数的各个因子,利用循环的好处是没必要知道因子个数, } //当超过我们设定的范围时,循环自动停止,并按照要求输出所以的因子 printf("\n"); } } return 0; }需要仔细理解每个循环的作用,才能自如运用循环,现阶段循环嵌套功能挺强的。