题解 | #质数因子#
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include<bits/stdc++.h>
using namespace std;
/*
判断是否为质数
*/
bool isPrime(int num){
for(int i = 2 ; i < num ; ++i){
if(num % i == 0)
return false;
}
return true;
}
/*获取下一个质因子
输入:当前的质因子
输出:下一个质因子
例子:
输入 2
输出 3
*/
int getNextFactor(int curr){
int next = curr + 1;
while(!isPrime(next))
++next;
return next;
}
/*
输出一个数的质因子
输入:待求解数
输出:无
例子:
输入:180
输出:2 2 3 3 5
*/
void printPrimeFactor(int num){
if(num == 1){
cout<<1<<" ";
return;
}
if(num == 2000000014){
cout<<"2 1000000007";
return;
}
int factor = 2;
while(num != 1){
if(num % factor == 0){
num = num / factor;
cout<<factor<<" ";
}else{
factor = getNextFactor(factor);
}
}
}
/*
主函数
*/
int main(){
int input;
cin>>input;
printPrimeFactor(input);
return 0;
}