shouts是什么意思啊:一个C语言问题?在线等!解决给分

来源:百度文库 编辑:高校问答 时间:2024/04/30 01:30:50
题目:如果一个数等于其所有真因子(不包括其本身)之和,则该数为完数,例如6的因子有1、2、3,且6=1+2+3,故6为完数,求2~1000中的完数。
没有答案的:
#include<stdio.h>
main()
{
int n,k,s=0;
for(n=2;n<=1000;n++)
{
for(k=1;k<n;k++)
if(n%k==0)s=s+k;
if(s==n)printf("%5d",n);
}
}

正确的:
#include<stdio.h>
main()
{
int n,k,s;
for(n=2;n<=1000;n++)
{
s=0;
for(k=1;k<n;k++)
if(n%k==0)s=s+k;
if(s==n)printf("%5d",n);
}
}

每个数的因子和要重新计算啊,否则s越加越大