C 实战练习题目19

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

程序分析:请参照:C 实战练习题目14。

实例:

 1 #include<stdio.h>
 2 #define N 1000
 3 int main()
 4 {
 5     int i,j,k,n,sum;
 6     int a[256];
 7     for(i=2;i<=N;i++)
 8     {
 9         sum=a[0]=1;
10         k=0;
11         for(j=2;j<=(i/2);j++)
12         {
13             if(i%j==0)
14             {
15                 sum+=j;
16                 a[++k]=j;
17             }
18             
19         }
20         if(i==sum)
21         {
22             printf("%d=%d",i,a[0]);
23             for(n=1;n<=k;n++)
24                 printf("+%d",a[n]);
25             printf("
");
26         }
27         
28     }
29     return 0;
30 }

以上实例输出结果为:

6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248

 感谢你的阅读,请用心感悟!希望可以帮到爱学习的你!!分享也是一种快乐!!!请接力。。。

点击查看原文,谢谢!

原文地址:https://www.cnblogs.com/kangyifan/p/12988316.html