我着手编写一个项目,该项目将查找给定输入数字的所有主要除数。

int checkPrimeDivisors = 0;
int x = 0;

bool isPrime(int someNumber) {
    bool status = true;
    for (int z = 2; z <= sqrt(someNumber); z++) {
        if (someNumber % z == 0)
            return false;
    }
    return true;
}


int main() {
    cin >> x;
    for (int someNumber = 1; someNumber < x; someNumber++) {
        if (x % someNumber == 0 && someNumber == isPrime(someNumber))
            cout << someNumber << endl;
    }
    return 0;
}

这是我想出的代码。当我检查所有除数并省略&& someNumber == isPrime(someNumber)时,适用于工作的循环,但是一旦我添加了条件检查,它就根本不会显示除数。
我似乎无法弄清楚问题出在哪里,我们将不胜感激。

最佳答案

isPrime(someNumber)返回一个 bool(boolean) 值。 bool(boolean) 值几乎永远不会等于someNumber本身。无需==测试,只需:

if (x % someNumber == 0 && isPrime(someNumber))

关于c++ - 查找素数C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46247317/

10-11 20:30