请问这个c++求完数程序错在哪?

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:03:04
#include <iostream.h>
void main()
{
int t,sum;
for(int n=1;n<1000;n++)
for(int m=1;m<n;m++)
if(n%m!=0) continue;
else
{
t=n/m;
sum=sum+t;
}
if(sum==n)
cout<<"n="<<n<<endl;
}
我是初学,自己编的这个程序执行出来什么都没有啊,请高手指点一下啊

楼主,你的完数是怎么定义的呢,好像算法有问题吧,还有,sum未赋初值,应该先让它为0,这样累加起来的数才有意义
#include<iostream>

using namespace std;

bool perfect(int n) //用函数判断是否完数
{
int i;
int sum = 0;

for(i = 1; i<n; ++i)
{
if(n%i) continue;

sum += i;//是因子就累加
}
if(sum == n) return true;
else return false;
}
void main()
{
int i;
for(i = 1;i<=1000;++i)
{
if(perfect(i))
cout<<i<<" ";
}
cout<<endl;
}


if(sum==n)
cout<<"n="<<n<<endl;
这里的判断是干什么用的啊
很显然sum不会等于n啊
当然没有输出啦
你改成if(sum!=n)
或者删掉这一句
就可以了