#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++ 프라임 숫자가 정답을주지 않음
저는 i와 n에 대해 double과 int 사이를 변경하려고했습니다.
3을 입력하면 소수를 표시합니다.
문제는 일부 소수를 소수가 아닌 것으로 표시한다는 것입니다.
대신 n의 제곱근을 얻습니다. 당신은 for 루프 조건을'i * i <= n'으로 가질 수 있습니다. 이것은'i <= sqrt_of_n'과 같습니다. –