Python解决1到n之间所有数字因数总和问题
### 🍃解题思路 为了计算1到`n`之间所有数字的因数总和,我们可以使用两层循环。外层循环遍历从1到`n`的每个数字,内层循环找出每个数字的所有因数并求和,最后将每个数字的因数和累加起来。 ### 📝代码实现 ```python n = int(input()) total_sum = 0 # 遍历1到n的每个数字 for i in range(1, n + 1): factor_sum = 0 # 找出i的所有因数并求和 for j in range(1, i + 1): if i % j == 0: factor_sum += j total_sum += factor_sum print(total_sum) ``` ### 📌代码解释 1. **输入处理**:使用`input()`函数获取用户输入的整数`n`,并将其转换为整数类型。 2. **外层循环**:使用`for`循环遍历从1到`n`的每个数字`i`。 3. **内层循环**:对于每个数字`i`,使用`for`循环遍历从1到`i`的每个数字`j`,判断`j`是否为`i`的因数,如果是,则将其累加到`factor_sum`中。 4. **累加因数和**:将每个数字的因数和`factor_sum`累加到`total_sum`中。 5. **输出结果**:最后输出`total_sum`。 ### 🚀复杂度分析 - **时间复杂度**:$O(n^2)$,因为使用了两层嵌套循环。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 💡开发建议 - **代码优化**:可以使用数学方法优化算法,减少时间复杂度。例如,对于每个因数`i`,它会在`i`的倍数中被重复计算,可以通过反向思考,统计每个因数在1到`n`中出现的次数,从而将时间复杂度优化到$O(n)$。 - **错误处理**:可以添加输入验证,确保用户输入的是一个小于100的正整数。 ######[AI写代码神器 | 502点数解答 | 2026-04-25 19:07:17]
- Python 实现:根据甜度值为甜甜圈评定等级(字节豆包 | 243点数解答 | 2025-12-06 18:35:50)96
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)485
- 巧用筛法!计算 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 | 422点数解答 | 2024-10-29 15:43:54)437
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)431
- Python:用正则表达式从含多种字符的字符串中提取英文、数字和中文单词(GPT | 522点数解答 | 2024-05-31 19:05:27)332
- Python:用正则表达式结合 split 思路提取一行字符串中的英文、数字和中文单词 (GPT | 399点数解答 | 2024-05-31 19:07:31)327