【发布时间】:2016-09-23 18:06:37
【问题描述】:
我知道我可以只使用 for 循环来定义质数,但在我将 for 循环用于该主题之前,我有一个想法,我可能可以使用 while 循环或 do-while 来制作一个。 不知何故,我的 do-while 循环似乎无法正常工作。
我的理论是,我可以找到素数来检查除数的余数,其中除数不断减少 1 直到除数达到 1。(虽然“直到除数达到 1。”部分不在代码中,但我假设余数为在除数低于 0 之前,无论如何都会出现 0。)
但是,它会在余数达到 0 之前一直停止。
我做错了什么?
我什至都尝试过而不是(remainder<1 && remainder!=1)below,但仍然没有运气。
while (remainder<1)
while (remainder==1)
#include <iostream>
using namespace std;
int main()
{
int number, divisor, remainder;
cin >> number;
divisor=number-1;
cout << "You've put " << number << ".\n";
do {
divisor = divisor - 1;
remainder=number%divisor;
}
while (remainder<1 && remainder!=1);
cout << divisor << " " << remainder << " " << number << " " << "Divisor, remainder, number\n";
return 0;
}
【问题讨论】:
-
我认为这是倒退:
number=divisor-1应该是divisor=number-1。 -
第二个条件隐含在第一个条件中。如果
remainder小于 1,它显然不是 1 -
我想你想要的条件是
while(divisor > 1 && remainder != 0) -
@Barmar 感谢您告诉我。
-
我还原了问题中的代码。解决方案应该放在答案中,问题需要保留损坏的代码,以便读者可以看到问题是什么以及如何解决。
标签: c++ c++11 while-loop do-while