c++编程求1000内的所有完数

来源:百度知道 编辑:UC知道 时间:2024/04/28 23:10:53
c++编程求1000内的所有完数
所谓完数就是一个数恰好等于它的包括1在内的所有不同因子之和,如6是完数,因为6=1+2+3

main()
{
static int k[10]; //设因子最多10个,怕不够用可以设再大些
int i,j,n,s;

for(j=2;j<1000;j++) //找完数
{
n=-1; //k数组下标
s=j; //测试数j,s为临时计算用
for(i=1;i<=sqrt(j);i++) //挨个找因数
{
if((j%i)==0) //j可以整除i吗
{ n++; //下标从0开始计
s=s-i;
k[n]=i; //加入i到k数组中
}
}
if(s==0) //s减完所有因数为0吗?是则j为完数
{
printf(\"%d is a wanshu\",j);
for(i=0;i<=n; printf(\"%d,\",k[i]); //挨个输出j的各因子
printf(\"%d\\n\",k[n]);
}
}
}