#include
void main()
{int s;
int i,j,m;
for(i=2;i<=1000;i++)
{ s=0;
for(j=1;j
{m=i%j;
if(m==0)
{s+=j;}}
if(s==i)
{printf("完数有=%d\n",i);
}}}
#include
void main()
{
int s=0;
int i,j=2,m;
for(i=2;i<=1000;i++)
{
for(j=1;j<=i/2;j++)
{
m=i%j;
if(m==0)
{
s+=j;
}
}
if(s==i)
{
printf("完数有=%d\n",i);
}
s=0;
}
}
应该是在每次运算完一个i 的时候要把s重新初始化为0,否则s就一直累加,所以会printf不出来吧~(我也研究了半天。。。)
最后算出来是6,28,496.
int s=0;应该放在第一个循环里面,因为从下一个数开始,s应该清0
for(i=2;i<=1000;i++)
{
s = 0;
.................
每次都把s初始为0