为什么这段代码不打印 num 的素因数?

-1 c++ math

我编写这段代码是为了获取用户输入的数字的素因数。

#include<bits/stdc++.h>
using namespace std;

void prime_Factors(int);
bool isPrime(int);

int main()
{
    int num;
    cout << "Enter the number to find it's prime factors: ";
    cin >> num;
    prime_Factors(num);
}

void prime_Factors(int n1)
{
    for(int i = 2; i<n1; i++)
    {
        if(isPrime(i))
        {
            int x = i;
            while(n1%x==0)
            {
                cout << i << " ";
                x *= i; 
            } 
        }
    }
}

bool isPrime(int n0)
{
    if(n0==1)
        return false;
    for(int i = 0; i*i <= n0; i++)
    {
         if(n0%i==0)
            return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

main() 函数中的 prime_Factors() 函数调用不会打印素因数。请帮忙!!

Mik*_*CAT 7

循环的范围是错误的。

首先,循环for(int i = 2; i<n1; i++)将无法找到素数(数字本身)的素因数。它应该是for(int i = 2; i<=n1; i++)

其次,循环for(int i = 0; i*i <= n0; i++)将导致被零除。它应该是for(int i = 2; i*i <= n0; i++)