用C语言编写一个输出100以内的完数的程序

#include"stdio.h"
main()
{int i,c,n=1,sum=1;
for(i=1;i<=100;i++)
{for(n=2;n<=i-1;n++)
{ if(i%n==0) c=i-n;
else break;
}

if(c==0) printf("%d\n",sum);
}
}
这个程序为什么不对

请对比修改的地方:

#include"stdio.h"

main()

{int i,c,n=1,sum=0;

for(i=1;i<=100;i++)

{c=i;

for(n=1;n<=i/2;n++)

if(i%n==0) c=c-n;

if(c==0)

{printf("%d\n",i);

sum++;}

}

printf("100以内有%d个完数\n",sum);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-10
你sum始终是1,你程序中又没有改变。
#include"stdio.h"
main()
{int i,c,n=1,sum=1;
for(i=1;i<=100;i++)
{
c=i; //这里将i赋值给c
for(n=2;n<=i-1;n++)
{
if(i%n==0) c=c-n; //c进行相应的改变。

}

if(c==0) printf("%d\n",i);
}
}本回答被网友采纳
第2个回答  2011-12-23
#include<stdio.h>
main()
{int i,j,sum=0;
for(i=2;i<=100;i++)
{ sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
printf("%d\n",i);
}

}
s
试试 我的吧 我已经 确认过了 应该还蛮容易懂的
第3个回答  2017-07-26
你的sum从一开始赋值了1之后就没有任何改变,我没看懂输出sum的值有什么意义
第4个回答  2011-12-10
同一楼
相似回答