我知道我可以使用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;
}
答案 0 :(得分:2)
首先,您的变量赋值中有拼写错误。这一行:
number = divisor - 1;
应该是:
divisor = number - 1;
while()
条件应该是while (remainder != 0)
,这样只要你没有找到除数,循环就会一直重复。如果您想更明确,可以使用while (divisor > 1 && remainder != 0)
。 divisor == 1
时没有必要重复,因为这是所有整数的除数。