我想计算完美的数字。这是我目前的代码
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)。
来自维基:
在数论中,一个完整数是一个正整数,等于其正确的除数之和,即除数除数之外的正除数之和。
因此你必须改变
if(num %i ==0)
至
if(num == i)
您想要检查总和是否等于数字本身,而不是总和和数字模数是否为零。
要在同一行上打印它们,您必须更改
cout << i << endl;
至
cout << i << '\t';
从主要回来之前
cout << endl;
然后产生输出:
6 28 496 8128