我正在尝试计算完美数字。这是我当前的代码
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),哪个是完美数字。
答案 0 :(得分:6)
从Wiki:
在数论中,理想数是一个正整数,等于其适当的正因数之和,即不包括数字本身的正因数之和
因此您必须进行更改
self.integer
到
if(num %i ==0)
您要检查和是否等于数字本身,而不是和和模数是否为零。
要在同一行上打印它们,必须进行更改
if(num == i)
到
cout << i << endl;
并且在从main返回之前
cout << i << '\t';
然后产生输出:
cout << endl;