1- Description
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )最后一个数后面也要有空格
详细描述:
函数接口说明:public String getResult(long ulDataInput)
输入参数:long ulDataInput:输入的正整数
返回值:String
输入描述:
输入一个long型整数。
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。示例1:
输入:
180
输出:
2 2 3 5
2- Solution
- 下面给出一种常规的解法
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
vector<int> vecPrime;
int main(){
unsigned long inputnum = 0;
while(cin >> inputnum){
int i = 2;
while(inputnum != 1){
if(i < sqrt(inputnum) + 1){
if(inputnum % i == 0){
vecPrime.push_back(i);
inputnum /= i;
}else{
i++;
}
}else{//说明只能是本身了!
vecPrime.push_back(inputnum);
break;
}
}
for(int i = 0; i < vecPrime.size(); ++i){
cout<< vecPrime[i] <<" ";
}
}
return 0;
}
- 下面解法很简洁:每找到一个因数,一直除到余数为0,找到的一定是质数
using namespace std;
int main()
{
unsigned long inputnum;
while(cin>>inputnum)
{
for(int i = 2;i <= inputnum;i++)
{
while(inputnum % i==0)
{
cout<< i <<' ';
inputnum /= i;
}
}
}
}
欢迎关注公众号:CodeLab