1200:分解因数 递归 C++
时间: 2023-08-12 19:57:50 浏览: 91
以下是使用递归方法在C++中分解因数的示例代码:
```cpp
#include <iostream>
#include <vector>
// 递归分解因数
void factorize(int n, std::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); // n本身是一个质数
}
}
int main() {
int number = 1200;
std::vector<int> factors;
factorize(number, factors);
std::cout << number << "的因数为:";
for (int factor : factors) {
std::cout << factor << " ";
}
return 0;
}
```
这段代码会将1200分解为2 2 2 2 3 5,它们是1200的所有因数。
相关问题
1210因子分解递归C++
好的,下面是一个递归的 1210 因子分解的 C++ 代码示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> factorize(int n) {
if (n == 1) {
return vector<int>();
}
for (int i = 2; i <= n / i; i++) {
if (n % i == 0) {
vector<int> factors = factorize(n / i);
factors.push_back(i);
return factors;
}
}
return vector<int>(1, n);
}
int main() {
int n = 1210;
vector<int> factors = factorize(n);
for (int i = 0; i < factors.size(); i++) {
cout << factors[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:`2 5 11 11`
该递归函数的思路和 Python 示例代码基本相同,只是在循环上做了一些优化。同时,需要注意在递归调用函数时需要将得到的因子加入因子列表中。最终返回的因子列表即为所求的因子分解结果。
python递归函数分解质因数
以下是Python递归函数分解质因数的代码示例:
```python
def factorize(num, factor):
"""
分解质因数的递归函数
:param num: 待分解的数
:param factor: 当前的因子
"""
# 如果num已经被分解为1,说明已经分解完毕,直接返回
if num == 1:
return
# 如果num可以被当前因子整除,继续分解
if num % factor == 0:
print(factor, end=' ')
factorize(num // factor, factor)
# 如果num不能被当前因子整除,尝试下一个因子
else:
factorize(num, factor + 1)
# 测试
num = 60
factorize(num, 2) # 2 2 3 5
```
在这个函数中,我们传入两个参数:待分解的数num和当前的因子factor。如果num可以被factor整除,则说明factor是num的一个质因子,我们将它输出,并继续递归分解num // factor。否则,我们尝试下一个因子factor + 1。如果num已经被分解为1,则说明我们已经找到了所有质因子,直接返回即可。