您的位置:首页 > 其它

按小到大顺序输出一个正整数的所有质数因子

2017-07-12 16:52 302 查看


牛客在线编程题:


输入描述:

输入一个long型整数


输出描述:

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

示例1

输入

180


输出

2 2 3 3 5

/*基本思想:从2开始依次判断每个数是否为正整数num的因子,并该数满足质数*/

#include <stdio.h>
#include <math.h>
#include <iostream>

using namespace std;
//判断数num是否为质数,是返回true,否则返回false
bool isPrimeNum(long num){
if (num < 2){
return false;
}
int mid = static_cast<int>(sqrt(num));
if (num = 2){
return true;
}
for (int i = 3; i <= mid; i += 2)
{
if (num % i == 0){
return false;
}
}
return true;
}
//依次输出ulDataInput数的所有质数因子,以空格间隔
void getResult(long ulDataInput){
if (ulDataInput < 2){
return;
}
long i = 2;
while(ulDataInput != 1){
if (ulDataInput % i == 0 && isPrimeNum(i)){
cout << i << " ";
ulDataInput /= i;
i = 2;
}
else{
i++;
}
}
}

int main(){
    long num;
    cin >> num;
    getResult(num);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐