用C语言输出1000以内所有的完数

我的做法:

#include<stdio.h>
int main()
{
inti,n,sum;
for(n=1;n<=1000;n++)
{
sum=0;
for(i=1;i<n;i++)
{
if(n%i==0)
{sum=sum+i;}
if(sum==n)
{printf("%4d",n);}
}
}
return0;
}
输出结果却是:
6 6 6 24 24 24 24 28 28 28 28 28 28 28 28 28 28 28 28 28
28 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496 496
496 496 496 496 496 496 496 496 496Press any key to continue
可以帮忙看一下吗,谢谢!

第1个回答  2020-02-29
/*输出1000以内的完数*/
#include <stdio.h>
int main(void)
{
int i,j; //cyclic variable
int sum=0; //完数和
for(i=1;i<=1000;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0) sum=sum+j;
}
if(i==sum) printf("%d ",i);
sum=0;
}
return 0;
}
相似回答