牛客在线编程题:
输入描述:
输入一个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);
}
本文介绍了一个解决牛客网在线编程题目的方法,题目要求输入一个long型整数并输出其所有质数因子。文章提供了一段C++代码实现,通过判断每个数是否为质数以及是否能整除输入的整数来找到所有质数因子。
9884

被折叠的 条评论
为什么被折叠?



