用递归实现分解质因数。形如:12=2*2*3,用C++
时间: 2024-09-20 16:06:32 浏览: 108
在C++中,我们可以使用递归的方式来分解一个给定的正整数n的质因数。下面是一个简单的递归函数示例:
```cpp
#include <iostream>
#include <vector>
// 函数声明,用于找到因子并返回质因数的列表
std::vector<int> primeFactors(int n);
// 递归函数的核心部分
int recursiveFactor(int num, std::vector<int>& factors) {
if (num <= 1)
return 1;
// 检查当前数是否能被2整除
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) {
factors.push_back(i); // 将因子添加到结果列表中
num /= i; // 更新num为去除因子后的值
break;
}
}
// 如果num还是质数,说明它是最后一个因子
if (num > 1)
factors.push_back(num);
// 返回因子的数量(即递归的深度)
return factors.size();
}
// 主函数,测试并打印质因数
int main() {
int n = 12; // 要分解的数字
std::vector<int> factors = primeFactors(n);
std::cout << n << " = ";
for (const auto& factor : factors) {
std::cout << factor << "*";
}
std::cout << std::endl;
return 0;
}
// 定义主递归函数,用于实际处理质因数分解
std::vector<int> primeFactors(int n) {
std::vector<int> factors;
return recursiveFactor(n, factors);
}
```
在这个例子中,`recursiveFactor`函数会一直尝试将输入的`num`除以最小的质因数,直到`num`小于等于1为止。最后返回包含所有质因数的向量。
阅读全文