C++ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 我的错哪里呢
#include<iostream.h>
void main()
{
int i,j,sum=0,n=0,a[100];
for(i=2;i<=1000;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0)
{
a[n++]=j;
sum+=j;
}
}
if(i==sum)
cout<<i<<"为完全数"<<endl;
else
continue;
}
}
[解决办法]
转新手乐园。
这样的程序,断点后单步调试一下,必备的技能。
[解决办法]
主要是sum和n没有按数清零:
- C/C++ code
#include<iostream>using namespace std;int main(int argc, char* argv[]){ int i, j, sum = 0, n = 0, a[100]; for(i = 2; i <= 1000; i++) { sum = 0; n = 0; for(j = 1; j < i; j++) { if(i % j == 0) { a[n++] = j; sum += j; } } if(i == sum) { cout << i << "为完全数" << endl; } } return 0;}
[解决办法]
[解决办法]
3楼正解,另外补充一点就是楼主返回类型最好不要是void型的main函数,用Int型的好一点,不然容易产生未知错误。
[解决办法]
三楼正解,补充一点:写C++程序尽量用#include<iostream> using std::......而不是#include<iostream.h>
[解决办法]
google一下完数。