需要帮助计算完美数字

问题描述 投票:-1回答:1

我想计算完美的数字。这是我目前的代码

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)。

c++
1个回答
6
投票

来自维基:

在数论中,一个完整数是一个正整数,等于其正确的除数之和,即除数除数之外的正除数之和。

因此你必须改变

if(num %i ==0)

if(num == i)

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

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

cout << i << endl;

cout << i << '\t';

从主要回来之前

cout << endl;

然后产生输出:

6       28      496     8128
© www.soinside.com 2019 - 2024. All rights reserved.