我正在处理的是一个嵌套的for循环,它找到了完美的数字。找到完美数字的迭代很快就出现了。但是,我需要输出显示一个字符串,表示"找到完美的数字"并且发生过一次。然后在同一行,打印出所有完美的数字。例如,假设我有两个输入,1到30。
这意味着完美的数字是6和28。 输出应该是这样的。
完美数字:6 28.
我感到困惑的是如何在我创建的for循环中打印出一次该字符串。这是我到目前为止所拥有的。
#include <iostream>
int main()
{
int a, b;
std::cin >> a >> b;
int count = 0;
for (int i = a; i <= b; i++)
{
int sum = 0;
for (int j = 1; j <= i; j++)
{
if (i % j == 0)
{
sum += j;
}
}
if (i * 2 == sum)
{
std::cout << i << " ";
count++;
}
}
std::cout << "\n";
std::cout << "number of perfect numbers found: " << count << std::endl;
return 0;
}
答案 0 :(得分:0)
为什么“在for循环中”?在进入for循环之前执行此操作。
或者,如果您想确保在自己打印该字符串之前找到至少一个完整的数字,那么在您打印出各个值的行上,而不是:
std::cout << i << " ";
只是说:
std::cout << (count == 0 ? "Perfect numbers: " : "") << i << " ";
答案 1 :(得分:0)
你可以尝试这样的东西,然后用cout添加印刷品
for(i=start; i<=end; i++)
{
sum = 0;
/* Check whether the current number i is Perfect number or not */
for(j=1; j<i; j++)
{
if(i % j == 0)
{
sum += j;
}
}
/* If the current number i is Perfect number */
if(sum == i)
{
cout <<i<<" ,";
}
}