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]
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)74
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)301
- 巧用筛法!计算 N 到 M 间数的最大质因数个数(DeepSeek | 245点数解答 | 2026-01-18 12:43:51)65
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)439
- C 语言:按特定顺序读入并输出浮点数、整数和字符(字节豆包 | 106点数解答 | 2024-09-26 00:32:40)351
- C语言:按序读入浮点数、整数、字符并按新顺序输出,附代码实现 (字节豆包 | 108点数解答 | 2024-09-30 22:54:08)365
- C语言:按特定顺序读入并输出浮点数、整数和字符,精确控制小数位(字节豆包 | 155点数解答 | 2024-10-08 22:06:18)358
- C++与Python:按特定顺序输入输出数据并保留浮点数两位小数的实现(字节豆包 | 168点数解答 | 2024-10-08 22:07:03)362
- C语言:按特定顺序读入再输出,含浮点数精确格式处理(字节豆包 | 105点数解答 | 2024-10-08 22:07:29)373
- C++ 混合类型数据格式化输入输出:按指定顺序输出并保留两位小数(字节豆包 | 187点数解答 | 2024-10-16 14:31:08)417
- C语言:实现混合类型数据格式化输入输出,代码超简单!(字节豆包 | 159点数解答 | 2024-10-16 14:32:18)406
- C语言:按特定格式输入并格式化输出整数、实数和字符(字节豆包 | 103点数解答 | 2024-10-24 11:12:53)440