Я понимаю, что я могу просто использовать for-loop для определения простого числа, но перед тем, как реализовать цикл в эту тему, у меня возникла мысль, что я, возможно, смогу сделать это с циклом while или do-while. Каким-то образом мой цикл do-while кажется неправильным.C++ do while not looping
Моя теория заключалась в том, что я мог найти простое число для проверки остатка делителя, когда делитель продолжает уменьшаться на 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;
}
Я думаю, что это обратное: 'number = divisor-1' должно быть' divisor = number-1'. – Barmar
Второе условие подразумевается первым. Если 'остаток' меньше 1, это явно не 1 – user4581301
Я думаю, что вам нужно условие' while (divisor> 1 && остаток! = 0) ' – Barmar