#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++素數沒有給出正確的答案
我試着改變雙和int之間我和n。
如果我輸入3,它顯示素數。
問題是它顯示一些素數不是素數。
而不是得到n的平方根。你可以將你的for循環條件設置爲'i * i <= n',它與'i <= sqrt_of_n'相同 –