在计算完美数字时需要帮助

时间:2018-08-07 12:59:37

标签: c++

我正在尝试计算完美数字。这是我当前的代码

int main(int argc, char** argv) 
{
  int num = 0;
  int badness;
  for(int i=2; i<10000; i++)
  { 
    for (int j = 1; j<i; j++)
    { 
      if (i % j == 0)
      {
        num += j;
      }
    }

    if(num %i ==0)
    {
      cout << i << endl;
    } 

    num = 0;
  }
return 0;

}

我得到的输出是

6
28
120
496
672
8128

但是我想要得到的输出是:

6 28 496 8128

在我指定的范围内(即10000),哪个是完美数字。

1 个答案:

答案 0 :(得分:6)

从Wiki:

  

在数论中,理想数是一个正整数,等于其适当的正因数之和,即不包括数字本身的正因数之和

因此您必须进行更改

self.integer

if(num %i ==0)

您要检查和是否等于数字本身,而不是和和模数是否为零。

要在同一行上打印它们,必须进行更改

if(num == i)

cout << i << endl;

并且在从main返回之前

cout << i << '\t';

然后产生输出:

cout << endl;