C++质数没有给出正确的答案

C++ Prime Number not giving the correct answer

本文关键字:答案 C++      更新时间:2023-10-16
#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,它会显示素数。

问题是它显示一些素数不是素数。

for 循环的主体根本不使用i

特别是,对于任何积分nn % 1始终为零。

大概你想知道n是否可以被i整除,但意外检查n是否可以被1整除。

您可以通过在调试器中单步执行并将各种子表达式转换为"监视表达式"来轻松发现此错误。