【发布时间】:2014-01-30 19:14:09
【问题描述】:
#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 不是素数。有人可以帮我找出我搞砸的地方吗?
我尝试在 i 和 n 的 double 和 int 之间进行转换。
如果我输入 3,它会显示素数。
问题是它显示一些素数不是素数。
【问题讨论】:
-
而不是得到 n 的平方根。您可以将 for 循环条件设置为
i*i <= n,它与i <= sqrt_of_n相同