完数定义:
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数
下面是错误代码
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
for (int i=2;i <= 1000;i++)
{
for (int j = 1;j <i;j++)
{
if (i %j == 0)
{
sum += j;
}
}
if (i==sum )
{
cout << i <<endl;
for (int j = 1;j < i;j++)
{
if (i % j == 0)
{
cout << j<<endl;
}
}
}
}
return 0;
}
错误原因:忽略了一些值在 一个循环过后 需要重新赋值
即 代码中的 sum不能一直累加
因此修改,带注释的这行 为新加的代码
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
for (int i=2;i <= 1000;i++)
{
sum = 0;//必须初始化为零,不然会一直累加
for (int j = 1;j <i;j++)
{
if (i %j == 0)
{
sum += j;
}
}
if (i==sum )
{
cout << i <<endl;
for (int j = 1;j < i;j++)
{
if (i % j == 0)
{
cout << j<<endl;
}
}
}
}
return 0;
}