C++求完数问题 请求高人指点

来源:百度知道 编辑:UC知道 时间:2024/06/09 18:25:40
我是初学者 程序是这样的 编译没问题 但始终显示不出结果
#include<iostream.h>
void main()
{
int i,j,sum=0;
for(i=1;i<=1000;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
{
cout<<i<<" 是一个完数,其因数有 ";
for(j=1;j<i;j++)
{
if(i%j==0)
cout<<j<<","<<endl;
}
}
}
}

每次做完i的循环后,sum要归零的。

修改如下:
#include<iostream.h>
void main()
{
int i,j,sum=0;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
{
cout<<i<<" 是一个完数,其因数有 ";
for(j=1;j<i;j++)
{
if(i%j==0)
cout<<j<<","<<endl;
}
}
}
}

sum=0放在for 循环内

你的算法有问题。完数不是你这么算的。