我编写这段代码是为了获取用户输入的数字的素因数。
#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() 函数调用不会打印素因数。请帮忙!!
循环的范围是错误的。
首先,循环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++)。