用c++写一个用于将自然数用素数展开的代码,并注释
时间: 2024-02-19 14:57:23 浏览: 72
以下是用C++编写将自然数用素数展开的代码,并加上注释:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> primeFactors(int n) {
// 定义一个空向量,用于存储分解出来的素数
vector<int> factors;
// 从最小的素数2开始,不断将n除以素数,直到n为1
for (int i = 2; i * i <= n; i++) {
while (n % i == 0) {
factors.push_back(i);
n /= i;
}
}
// 如果n仍然大于1,则说明n本身就是素数
if (n > 1) factors.push_back(n);
// 返回分解出来的素数向量
return factors;
}
int main() {
int n;
cout << "请输入一个自然数n:";
cin >> n;
vector<int> factors = primeFactors(n);
cout << n << "的素数分解为:";
for (int i = 0; i < factors.size(); i++) {
cout << factors[i];
if (i < factors.size() - 1) cout << " × ";
}
cout << endl;
return 0;
}
```
注释中解释了代码的每一个步骤:
1. 首先定义一个空向量 `factors`,用于存储分解出来的素数。
2. 从最小的素数2开始,不断将n除以素数,直到n为1。具体来说,使用一个 for 循环遍历2到sqrt(n),如果i是n的因子,则重复除以i,并将i加入 `factors` 中。这个过程可以使用 while 循环实现。
3. 如果n仍然大于1,则说明n本身就是素数,将其加入 `factors` 中。
4. 最后输出分解出来的素数向量 `factors`,并在每两个素数之间加上一个乘号。
阅读全文