#include <iostream>
#include <cmath>
using namespace std;
bool prime(int n);
int main()
{
double i;
while (true)
{
cout << "Enter a number that isn't 0: ";
cin >> i;
if (i == 0)
break;
if(prime(i))
cout << i << " is prime" << endl;
else
cout << i << " is not prime." << endl;
}
system ("Pause");
return 0;
}
bool prime (int n)
{
int i;
double sqrt_of_n = sqrt(double (n));
for (i = 2; i <= sqrt_of_n; i++)
{
if (int(n) % 1 == 0)
return false;
}
return true;
}
Каждый раз, когда я запускаю программу, если я ввожу 7, я получаю, что 7 не является простым. Может кто-нибудь помочь мне выяснить, где я испортил?C++ Prime Номер не дает правильного ответа
Я попытался изменить между double и int для i и n.
Если я ввожу 3, он отображает штрих.
Проблема в том, что она показывает некоторые простые числа как не простые.
вместо получения квадратного корня n. вы можете иметь условие для цикла for как «i * i <= n', это то же самое, что« i <= sqrt_of_n' –