酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++求区间内所有整数因数之和详细实现

好的,我们先来理解一下题目要求,然后用C++实现它。 --- ## 🧩 问题分析 题目要求计算: - 给定两个整数 **m** 和 **n**(m ≤ n) - 对从 m 到 **n** 范围内的**每一个整数**,计算它的**所有因数之和**(包括 1 和自身) - 然后将这些和**累加**,输出最终的整数 ### 🔍 示例解释 输入:`2 4` - 整数 2 的因数:1, 2 → 和 = 1+2 = 3 - 整数 3 的因数:1, 3 → 和 = 1+3 = 4 - 整数 4 的因数:1, 2, 4 → 和 = 1+2+4 = 7 总和 = 3 + 4 + 7 = **14** 输出:`14` --- ## 💻 C++ 实现 ```cpp #include <iostream> using namespace std; // 计算一个整数所有因数之和 int sumOfFactors(int num) { int sum = 0; // 从1到num遍历,找出所有能整除num的数 for (int i = 1; i <= num; ++i) { if (num % i == 0) { sum += i; } } return sum; } int main() { int m, n; cin >> m >> n; int totalSum = 0; // 遍历从m到n的所有整数 for (int i = m; i <= n; ++i) { totalSum += sumOfFactors(i); } cout << totalSum << endl; return 0; } ``` --- ## 📌 开发建议与注意要点 - **小规模优化**:题目中 `1 ≤ m ≤ n ≤ 1000`,因此直接用 `O(n^2)` 的简单遍历即可,不需要额外优化。 - **因数查找优化**:如果范围变大(如 n=10^6),可以将 `sumOfFactors` 优化为只遍历到 `sqrt(num)`,并同时加上成对的因数。 - **代码可读性**:将逻辑拆分成 `sumOfFactors` 函数,main函数清晰展示流程。 - **数据类型**:本题因数和不超出 `int` 范围,但如果n较大建议使用 `long long`。 --- ## ⚠️ 常见陷阱 - ❌ 忘记把整数自身(num)加入因数中:因数包括 1 和 num 本身。 - ❌ 范围弄反:确保是从 m 到 n,不是从 1 到 n。 - ❌ 题目要求的输入输出格式:样例中是两个整数一行输入,输出一个整数。 --- ######[AI写代码神器 | 624点数解答 | 2026-06-12 19:44:36]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]