题目链接

​https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607?tpId=37&tqId=21229&tPage=1&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking​

题目描述

功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )

最后一个数后面也要有空格

 

详细描述:

函数接口说明:

public String getResult(long ulDataInput)

输入参数:

long ulDataInput:输入的正整数

返回值:

String

 

输入描述:

输入一个long型整数

输出描述:

按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

示例1

输入

复制

180

输出

复制

2 2 3 3 5

题解: 

#include <iostream>
using namespace std;
int prime[100001];
bool mark[100001];
int primesize;
void init(){
primesize = 0;
for(int i = 2; i <= 100000; i++){
if(mark[i] == true)
continue;
prime[primesize++] = i;
if(i > 10000)
continue;
for(int j = i * i; j <= 100000; j = j + i){
mark[j] = true;
}
}
}
int main(){
long n;
cin >> n;
init();
for(int i = 0; i < primesize; i++){
while(n != 1 && n % prime[i] == 0){
cout << prime[i] << " ";
n /= prime[i];
if(n == 1){
break;
}
}
}
return 0;
}