C++ 寻找素因子C++;

C++ 寻找素因子C++;,c++,loops,C++,Loops,我开始写一个项目,找到给定输入数的所有素数因子 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 tr

我开始写一个项目,找到给定输入数的所有素数因子

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;
}
int checkprimeditors=0;
int x=0;
bool-isPrime(int-someNumber){
布尔状态=真;
对于(intz=2;z>x;
for(int-someNumber=1;someNumberisPrime(someNumber)
返回一个布尔值。布尔值几乎永远不会等于
someNumber
本身。不需要
=
测试,只要:

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

无关:重复调用is prime将是致命的。请研究使用质数筛选算法并缓存结果。通过将输入到
x
中的数字与来自
isPrime()的布尔结果进行比较,您希望实现什么样的目标
。你能试试吗?在你的
isPrime
函数中,你从不使用
status
变量。你可以不使用
sqrt
而直接执行
z*z,你可以从3开始循环,然后递增2。除2之外的所有偶数都不是素数。