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` 的所有因数,并将它们累加到 `factorSum` 中。 4. **累加结果**:将每个数字的因数和 `factorSum` 累加到 `totalSum` 中。 5. **输出结果**:使用 `cout` 输出最终的因数总和。 ### 🚀复杂度分析 - **时间复杂度**:$O(n^2)$,因为有两层嵌套循环。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 💡开发建议 - **优化算法**:当前算法的时间复杂度为 $O(n^2)$,对于较大的 `n` 可能会较慢。可以考虑使用更高效的算法,例如利用数学性质来减少不必要的计算。 - **错误处理**:可以添加输入验证,确保输入的 `n` 满足 `n < 100` 的条件。 - **代码可读性**:可以添加注释来提高代码的可读性,特别是对于内层循环的逻辑。 ######[AI写代码神器 | 585点数解答 | 2026-04-25 19:08:18]
- Python 实现:根据甜度值为甜甜圈评定等级(字节豆包 | 243点数解答 | 2025-12-06 18:35:50)96
- 巧用筛法!计算 N 到 M 间数的最大质因数个数(DeepSeek | 245点数解答 | 2026-01-18 12:43:51)49
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)57
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)71
- 网站密码有效性检查:代码实现与详细解读(字节豆包 | 567点数解答 | 2025-11-26 20:44:53)86
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)153
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)174
- Python:用正则表达式从含多种字符的字符串中提取英文、数字和中文单词(GPT | 522点数解答 | 2024-05-31 19:05:27)332
- Python:用正则表达式结合 split 思路提取一行字符串中的英文、数字和中文单词 (GPT | 399点数解答 | 2024-05-31 19:07:31)327
- 繁体字编码代码修改:人物名字合法性验证函数转简体版(字节豆包 | 325点数解答 | 2024-10-21 18:57:01)302
- 计算区间 n 到 m 中数字 x 出现次数的 Python 实现与详解(字节豆包 | 289点数解答 | 2025-12-07 17:14:59)93
- Python 实现:计算区间 n 到 m 中数字 x 出现的次数(字节豆包 | 322点数解答 | 2025-12-13 21:37:08)95