怎样用C语言编一到一千内的“完数”?

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:53:42

http://zhidao.baidu.com/q?word=%CD%EA%CA%FD&ct=17&pn=0&tn=ikaslist&rn=10

http://zhidao.baidu.com/question/6520716.html?si=10

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]);
}
}
}