1084: 【入门】因子求和递归c++
时间: 2025-02-02 10:58:29 浏览: 119
### C++ 递归实现因子求和
为了满足需求,在C++中可以采用递归来计算一个整数的因子之和。下面展示一段利用递归方法来完成此功能的代码:
```cpp
#include <iostream>
using namespace std;
// 定义递归函数用于累加因子
int sumOfFactors(int n, int divisor) {
// 基本情况:当除数大于平方根时返回0
if (divisor > sqrt(n)) return 0;
// 初始化总和变量s
int s = 0;
// 若当前测试的除数是n的一个真因子,则加入到总和中
if (n % divisor == 0 && divisor * divisor != n){
s += divisor + n / divisor;
}
else if(divisor * divisor == n){
s += divisor;
}
// 继续尝试下一个可能的因子并累积结果
return s + sumOfFactors(n, divisor + 1);
}
int main() {
int n;
cin >> n;
// 调用递归函数,从最小质因数2开始检测
cout << sumOfFactors(n, 2);
return 0;
}
```
上述代码定义了一个名为`sumOfFactors`的辅助函数,它接受两个参数:待处理的目标数值`n`以及正在检验是否能被其整除的小于等于目标值平方根的最大整数`divisor`。每当找到一对新的因子组合时就更新局部变量`s`并将这些新发现的因子添加进去;之后通过增加`divisor`继续探索更大的潜在因子直到超出合理范围为止。
需要注意的是,这段程序仅考虑了除了1以外小于或等于给定数字平方根部分的所有正因子,并且对于完全平方数做了特殊处理以避免重复计入相同的因子两次[^1]。
阅读全文
相关推荐


















