c++怎么分解质因数?
时间: 2024-08-14 07:04:51 浏览: 111
在 C++ 中分解质因数通常通过循环和除法操作来实现,可以采用一种名为 "试除法" 的简单算法。下面是一个基本的步骤:
1. 初始化一个变量 `factor` 为输入数字,假设这个数字是待分解的数。
2. 使用一个循环,从最小的质数(2开始)遍历到 `factor` 开始,检查每个数是否能整除 `factor`。
- 如果能整除,就将该质数作为因子,并更新 `factor` 为商,继续寻找下一个质数。
- 否则,如果当前数不是质数(例如大于 `sqrt(factor)`),则跳过它,因为之后的数更大不可能是更小的 `factor` 的因子了。
3. 当 `factor` 变成 1 时,所有之前的质数即为原始数字的质因数。
以下是简单的 C++ 代码示例:
```cpp
#include <iostream>
#include <vector>
std::vector<int> primeFactors(int n) {
std::vector<int> factors;
for (int i = 2; i * i <= n; ++i) { // 只需检查到 sqrt(n)
while (n % i == 0) {
factors.push_back(i); // 将找到的因子添加到向量中
n /= i; // 更新 n 为 n / i
}
}
if (n > 1) { // 如果 n 还有剩余,说明最后一个因子就是 n 自身
factors.push_back(n);
}
return factors;
}
int main() {
int num;
std::cout << "Enter a number to factorize: ";
std::cin >> num;
std::vector<int> factors = primeFactors(num);
std::cout << "Prime factors of " << num << " are: ";
for (int factor : factors) {
std::cout << factor << " ";
}
std::cout << "\n";
return 0;
}
```
阅读全文