#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;
}
Run Code Online (Sandbox Code Playgroud)
每次我运行程序,如果我输入7,我得到7不是素数.有人能帮我弄明白我搞砸了吗?
我试过在i和n之间改变double和int.
如果我输入3,它显示素数.
问题在于它显示一些素数不是素数.
for循环的主体根本不使用i.
特别n % 1是,对于任何积分,总是为零n.
大概你想知道是否可n被整除i,但偶然检查是否n可以被1整除.
您可以通过单步执行调试器并将各种子表达式转换为"监视表达式"来轻松地发现此错误.