【发布时间】:2019-05-17 07:50:56
【问题描述】:
用户输入一个数字,例如100。我们需要在1到用户输入的范围内找到完美的数字,即100。
完美数是一个正整数,它等于不包括数字本身的正因数之和。
例如 6 是一个完美数,因为 6 是 (1、2 和 3) 的和,它们是 6 的除数。
#include <iostream>
using namespace std;
int main() {
int input;
int sum=0;
cout << "\t Find perfect Numbers" << endl;
cout << "-------------------------------- \n";
cout << "Enter an upper bound Number: ";
cin >> input;
for (int i=1; i<input; i++)
{
for(int u=1; u<i; u++)
{
if (i%u == 0)
{
sum += u;
}
}
if (sum == i)
{
cout << sum;
}
}
return 0;
}
在我运行这段代码后,它要求我输入一个数字,一旦我输入一个数字,程序就会退出而不打印预期的结果。
【问题讨论】:
-
您需要在外部
for循环的每次迭代中将sum重置为零。 -
另外,如果你输入
100,它只会打印1和99之间的完美数字。你可能想在总和之后打印一个换行符。 -
请注意,您可以使用
for(int u=1; u <= i/2; u++)加快搜索速度
标签: c++ for-loop user-input