c++单层循环对合数进行质因数分解
时间: 2024-11-16 08:20:11 浏览: 27
在C++中,单层循环对合数进行质因数分解的基本思路是,从最小的质数2开始,检查每个合数能否被当前质数整除,如果能,则将该质数作为因子,并继续检查剩余部分是否还能被其他质数整除。这个过程会一直持续到合数无法再被除以已找到的任何质数为止。
以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <vector>
// 判断是否为质数
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; ++i)
if (num % i == 0)
return false;
return true;
}
// 质因数分解
std::vector<int> primeFactorization(int num) {
std::vector<int> factors;
for (int i = 2; i * i <= num; ++i) { // 只需遍历到 sqrt(num),因为大于sqrt(num) 的因子会有一个对应于小于 sqrt(num) 的因子
while (num % i == 0) {
factors.push_back(i); // 添加因子到结果列表
num /= i; // 更新num为除以i后的值
}
}
// 如果num还有余数(即是个质数),添加最后一个质因数
if (num > 1) {
factors.push_back(num);
}
return factors;
}
int main() {
int compositeNum = 84; // 示例合数
std::vector<int> factors = primeFactorization(compositeNum);
std::cout << "The prime factorization of " << compositeNum << " is: ";
for (const auto& factor : factors) {
std::cout << factor << " ";
}
std::cout << ".\n";
阅读全文