请编写程序求解500以内的所有完数。

来源:百度知道 编辑:UC知道 时间:2024/05/26 06:17:55
如果一个数恰好等于它的因子和,那么这个数就成为“完数”,如6=1+2+3,6就是一个完数。
我的答案是:#include<iostream.h>
void main()
{
int x,sum,i;
sum=0;
for(x=2;x<=500;x++)
{
for(i=1;i<=x-1;i++)
{
if(x%i==0)
sum+=i;
}
if(sum==x)
cout<<x<<'\t';
}
}
但是运行起来什么也没输出,检查一下

应改为:
#include<iostream.h>
void main()
{
int x,sum,i;

for(x=2;x<=500;x++)
{
for(i=1;i<=x-1;i++)
{
sum=0;
if(x%i==0)
sum+=i;
}
if(sum+1==x)//你的(sum==x)错了
cout<<x<<'\t';
}
}

注:第五行:sum=0错误;此处初始化应放在循环里面!至于为什么自己好好参透参透吧!祝你进步~