一个数恰好等于它的因子之和

时间:2025-04-15 13:22:28

完数定义:

完全数(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;
}