c++ - C++中如何判断一个数是否为质数

标签 c++ loops boolean primes

对我来说,这段代码看起来是正确的,但是当我运行它时,它给我的所有输出都是“2”。我试过多次查看它,但每次我都没有发现任何错误。所以我想知道是否有人不介意查看以下代码让我知道我做错了什么。

#include <iostream>

using namespace std;

bool oddOrEven(int x)
{
    int divisor = 2; // initial divisor check
    bool boolCheck = true; // initial boolean value set to true, later to check

    for(int i = x-1; i >= 2;i--)
    {
        if(i%divisor == 0)
            boolCheck = false;
    }

    return boolCheck; // returning whether or not the number is prime
}


int main()
{
    int num1 = 0;

    cout << "Please enter how many numbers you want to check: " << endl;
    cin >> num1;

    cout << "Prime numbers from 2-" << num1 << endl;

    for(int i=num1; i >= 2; i--)
    {
        if(oddOrEven(i))
            cout << i << endl;
    }
}

任何帮助将不胜感激,我觉得这可能与我的 boolean 检查有关,但我不是 100% 是什么。

编辑:甚至在发布之前我就意识到我没有增加除数,所以我试过了但结果还是不对。我只改变了这个:

for(int i = x-1; i >= 2;i--)
{
    if(i%divisor == 0)
        boolCheck = false;
    divisor = divisor + 1;
}

所以我仍然卡住了,再次感谢任何帮助。

最佳答案

您除错了数字。改变这一行

if(i%divisor == 0)

if (x % i == 0)

话虽如此,您可能知道您的算法远非最佳。至少您可以立即返回 false 而不是设置标志。您最多只能检查 x 的平方根的除数。您只能检查奇数除数。 And so on .

关于c++ - C++中如何判断一个数是否为质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27391481/

相关文章:

c++ - 可变参数模板作为 std::function 的参数

c# - 什么是值继承和引用继承?

c - 如何从数组列表的中间删除一个字符?

Python循环mysql语句

python - 中断并继续功能

python - 为什么 __bool__ 内置函数必须在 dask.delayed 对象上引发异常?

jsf-2 - h :selectOneMenu with boolean items doesn't work with null value

python - 从条件开始计算行数

c++ - OpenCV imwrite 不保存图像

c++ - 使用 C++11 和 RDRAND 的真随机数