首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 小弟我的错哪里呢

2012-09-25 
C++ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如61+2+3.编程找出1000以内的所有完数。 我的

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;}
[解决办法]
探讨
主要是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++)
{
……

[解决办法]
3楼正解,另外补充一点就是楼主返回类型最好不要是void型的main函数,用Int型的好一点,不然容易产生未知错误。
[解决办法]
三楼正解,补充一点:写C++程序尽量用#include<iostream> using std::......而不是#include<iostream.h>
[解决办法]
google一下完数。

热点排行