使用 C++ 计算 1 到 n 之间所有数字因数总和的解决方案
### 🍃思路分析 要计算 1 到 `n` 之间所有数字的因数的总和,我们可以通过两层循环来实现。外层循环遍历从 1 到 `n` 的每个数字,内层循环找出当前数字的所有因数并求和,最后把每个数字的因数和累加起来。 ### 💻代码实现 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; int totalSum = 0; // 遍历从 1 到 n 的每个数字 for (int i = 1; i <= n; i++) { int factorSum = 0; // 找出当前数字 i 的所有因数并求和 for (int j = 1; j <= i; j++) { if (i % j == 0) { factorSum += j; } } totalSum += factorSum; } cout << totalSum << endl; return 0; } ``` ### 📋代码解释 1. **输入部分**:使用 `cin` 读取用户输入的整数 `n`。 2. **外层循环**:`for (int i = 1; i <= n; i++)` 遍历从 1 到 `n` 的每个数字。 3. **内层循环**:`for (int j = 1; j <= i; j++)` 找出当前数字 `i` 的所有因数,若 `i % j == 0` 则 `j` 是 `i` 的因数,将其累加到 `factorSum` 中。 4. **求和**:将每个数字的因数和 `factorSum` 累加到 `totalSum` 中。 5. **输出结果**:使用 `cout` 输出最终的因数总和 `totalSum`。 ### ⚙️复杂度分析 - **时间复杂度**:$O(n^2)$,因为有两层嵌套循环。 - **空间复杂度**:$O(1)$,只使用了几个额外的变量。 ### 💡开发建议 - **边界条件检查**:在实际应用中,应该对输入的 `n` 进行边界条件检查,确保 `n < 100`。 - **性能优化**:对于较大的 `n`,可以考虑使用更高效的算法来计算因数和,例如利用数学公式进行优化。 - **错误处理**:可以添加对输入的合法性检查,比如输入是否为整数等。 ### 📚学习资源 - **C++ 官方文档**:https://isocpp.org/ - **C++ Primer**:经典的 C++ 学习书籍,适合初学者和有一定基础的开发者。 ######[AI写代码神器 | 643点数解答 | 2026-08-01 20:50:26]
- 导出功能优化:解决多次导出、过程异常、失败提示及完成通知问题 (DeepSeek | 1点数解答 | 2025-02-12 17:35:54)250
- Python 实现:根据甜度值为甜甜圈评定等级(字节豆包 | 243点数解答 | 2025-12-06 18:35:50)137
- 巧用筛法!计算 N 到 M 间数的最大质因数个数(DeepSeek | 245点数解答 | 2026-01-18 12:43:51)89
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)147
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)159
- JSP 实现商品展示模块:分页、搜索、交互与美观界面全搞定!(字节豆包 | 19点数解答 | 2024-12-13 15:00:43)425
- 网站密码有效性检查:代码实现与详细解读(字节豆包 | 567点数解答 | 2025-11-26 20:44:53)126
- Python:用正则表达式从含多种字符的字符串中提取英文、数字和中文单词(GPT | 522点数解答 | 2024-05-31 19:05:27)398
- Python:用正则表达式结合 split 思路提取一行字符串中的英文、数字和中文单词 (GPT | 399点数解答 | 2024-05-31 19:07:31)411
- 繁体字编码代码修改:人物名字合法性验证函数转简体版(字节豆包 | 325点数解答 | 2024-10-21 18:57:01)378
- 计算区间 n 到 m 中数字 x 出现次数的 Python 实现与详解(字节豆包 | 289点数解答 | 2025-12-07 17:14:59)182
- Python 实现:计算区间 n 到 m 中数字 x 出现的次数(字节豆包 | 322点数解答 | 2025-12-13 21:37:08)167