【C/C++】任意大于1的整数分解成素数因子乘积的形式
时间: 2024-01-22 08:04:00 浏览: 94
可以使用以下代码实现任意大于1的整数分解成素数因子乘积的形式:
```c++
#include <iostream>
#include <vector>
using namespace std;
void prime_factorization(int n) {
vector<int> factors;
for (int i = 2; i <= n / i; i++) {
while (n % i == 0) {
factors.push_back(i);
n /= i;
}
}
if (n > 1) {
factors.push_back(n);
}
for (int i = 0; i < factors.size(); i++) {
if (i > 0) {
cout << " * ";
}
cout << factors[i];
}
}
int main() {
int n;
cout << "Please enter an integer greater than 1: ";
cin >> n;
cout << n << " = ";
prime_factorization(n);
cout << endl;
return 0;
}
```
这段代码中,我们首先定义了一个 `prime_factorization` 函数,用于对输入的整数进行分解。在函数中,我们使用了一个 `vector` 容器来保存分解得到的素数因子。具体实现时,我们从 2 开始遍历到 $\sqrt{n}$,如果当前的数是 n 的因子,则将其加入到 `factors` 中,并将 n 除以该因子继续进行分解,直到 n 不再含有小于等于 $\sqrt{n}$ 的素因子为止。最后,如果 n 大于 1,则说明 n 本身就是一个素数,将其加入到 `factors` 中。最后,我们在主函数中输入一个整数 n,调用 `prime_factorization` 函数对其进行分解,并输出分解结果。
阅读全文