一个数如果恰好等于它的因子之和,这个数就称为完数。
相关习题:
《C程序设计》(第三版)6.7
《C程序设计教程》 5.7
Solution by Mutoo:
- #include<stdio.h>
- void main()
- {
- const COUNT = 1000; // 计算1000以内的完数
- int i,j;
- int addend;
- for(i=1;i<=COUNT;i++)
- {
- addend = 0; // 加数初始化
- for(j=1;j<=i/2;j++) // 任何一个数的因数的大小不会超过它的一半
- if(i%j==0) addend+=j; // 如果j是i的因数,将其累加
- if(i==addend){ // 筛选完数
- printf("%4d its factors are ",i);
- for(j=1;j<=i/2;j++)
- if(i%j==0) (j>1)?printf(","):0,printf("%d",j); // 这里的 ?: 表达式控制输入格式中的','(逗号)
- printf("/n");
- }
- }
- }
- /* Output
- 6 its factors are 1,2,3
- 28 its factors are 1,2,4,7,14
- 496 its factors are 1,2,4,8,16,31,62,124,248
- *******/
550

被折叠的 条评论
为什么被折叠?



