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没有按数清零:
#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;}
[解决办法]