【C/C++】给定一个大于1的整数n,将它分解成质因数相乘的形式,如果它本身是质数,则只需要输出它本身,如果是合数,则需要输出它的质数相乘形式,并且质因数是从小到大的顺序输出(不能用函数, 尽量用递归来做
时间: 2024-03-24 19:41:13 浏览: 70
以下是一个使用递归实现的 C++ 代码示例,可以将一个大于1的整数 `n` 分解成质因数相乘的形式:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
void prime_factorization(int n) {
if (n == 1) {
return;
}
int i;
for (i = 2; i <= sqrt(n); ++i) {
if (n % i == 0) {
cout << i << " ";
prime_factorization(n / i);
break;
}
}
if (i > sqrt(n)) {
cout << n << " ";
}
}
int main() {
int n;
cout << "请输入一个大于1的整数: ";
cin >> n;
cout << n << "的质因数分解结果为: ";
prime_factorization(n);
return 0;
}
```
该程序中的 `prime_factorization` 函数使用递归实现了质因数分解的过程。首先判断输入的整数 `n` 是否为 1,如果是则直接返回;否则从 2 开始依次判断 `n` 是否能被整除,如果存在一个因子,那么输出该因子并递归地对 `n` 除以该因子后的结果进行质因数分解;如果没有任何因子能整除 `n`,则说明 `n` 本身就是一个质数,直接输出即可。