【问题描述】输入一个正整数n,用递归方法从小到大输出它的所有质因子(因子是质数)
【输入形式】一行,一个正整数n,2<=n<=10000
【输出形式】一行,若干个正整数,两数之间用一个空格隔开,从小到大输出
【样例输入】
18
【样例输出】
2 3 3
代码如下: #include"iostream"#include"iomanip"#include"cmath"using namespace std;bool judge_prinme(int n)//判断质数{if (n <= 3){return n > 1;//如果n<3,只可能是1.2.3,2.3为质数,1既不是质数也不是合数.}if (n % 6 != 1 && n % 6 != 5)return false;int t = static_cast<int>(sqrt(n)) + 1;for (int i = 5; i < t; i += 6){if (n % i == 0){return false;}}return true;}void decomp_prinme(int& n)//分解整数{if (n != 1){for (int i = 2; i <= n; i++){if (n % i == 0){n = n / i;cout << i << " ";decomp_prinme(n);}}}elsereturn ;}int main(){int n;cin >> n;if (judge_prinme(n))cout << n << endl;else decomp_prinme(n);return 0;}