题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
程序:
#include <stdio.h>
main()
{
static int k[10];
int i,j,n,s;
for(j=2;j<1000;j++)
{
n=-1;
s=j;
for(i=1;i<j;i++)
{
if(j%i==0)
{
n++;
s=s-i;
k[n]=i;
}
}
if(s==0)
{
printf("%d is a wanshu ",j);
for(i=0;i<n;i++)
printf("%d ",k[i]);
printf("%d\n",k[n]);
}
}
}
解题思想:先把这个数取出,然后从2到这个数时间依次取数判断是不是因数,若是,则减去这个数,若不是,则继续判断下个数是不是因数,最后看结果是不是0来判断它是不是”完数”。
程序输出样式:

网友评论