//Testing numbers for primality
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n; //User input number
int i; //Input number will be divided by i
int count;
count = 0;
cout << endl;
while(n != 'q') {
cout << "#: ";
cin >> n;
for(i = 1; i <= n; i++) {
//increase the divisor until it's equal to n
if(n % i == 0) {
count++;
}
//If there is no remainder, count increases by 1. Since prime numbers are only divisible by 1 and themselves, count will be exactly 2 in the case of a prime number.
}
if(count == 2) {
cout << " 1\n"; //1 = yes prime
}else if(count != 2) {
cout << " 0\n"; //0 = not prime
}
count = 0;
}
if(n == 'q') {
return(0);
}
}
Здесь я тестирую номера, чтобы узнать, являются ли они основными. Счет увеличивается каждый раз, когда остаток деления n/i равен 0, поэтому, когда count = 2, выход равен 1 для да, в противном случае 0 для нет. Я получил программу, чтобы проверить столько чисел, сколько я хочу правильно во время сеанса, но я пытаюсь создать escape-последовательность.Завершение интерактивной программы вызывает бесконечный цикл
Я попытался использовать условие (n == 'q') для quit, но когда я ввожу q, программа циклически бесконечно. Я попытался сделать перерыв; оператор для этого условия в цикле while, но результат тот же. Я предполагаю, что эта проблема связана с преобразованием char-int/int-char. Может кто-нибудь намекнуть мне, как я могу создать рабочую последовательность выхода?
Почему бы не сделать ваше условие выхода специальным номером, который не имеет смысла для вашей программы, например, 0 или -1? – perelman
Возможный дубликат [Бесконечный цикл после приема ввода и тестирования, чтобы увидеть, является ли это int в C++] (http://stackoverflow.com/questions/8618473/infinite-loop-after-receiving-input-and-testing-to- see-if-its-an-int-in-c) –