C ++做而不循环

时间:2016-05-25 22:54:40

标签: c++ c++11 while-loop do-while

我知道我可以使用for循环来定义素数,但在我实现循环到该主题之前,我想到我可能会使用while循环或do-while制作一个。 不知何故,我的do-while循环似乎无法正常工作。

我的理论是,我可以找到用于检查除数的余数的素数,其中除数继续减少1,直到除数达到1.(虽然'直到除数达到1.'部分不在代码中,我会假设其余的在除数低于0之前,无论如何都会出现0。)

然而,它在剩余部分达到0之前一直停止。 我做错了什么? 我甚至尝试了两种,而不是(remainder<1 && remainder!=1),但仍然没有运气。

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;
}

1 个答案:

答案 0 :(得分:2)

首先,您的变量赋值中有拼写错误。这一行:

number = divisor - 1;

应该是:

divisor = number - 1;

while()条件应该是while (remainder != 0),这样只要你没有找到除数,循环就会一直重复。如果您想更明确,可以使用while (divisor > 1 && remainder != 0)divisor == 1时没有必要重复,因为这是所有整数的除数。