牛客在线编程题:
输入描述:
输入一个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); }