You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何补全Python脚本以计算n的所有真约数之和?

实现sum_divisors函数计算非自身约数之和

你的错误代码问题分析

  • 每次找到约数时都把sum重置为0,导致无法累加约数和
  • return sum放在了循环内部,第一次循环就直接返回结果,无法遍历所有可能的约数
  • 未处理n=0的特殊情况
  • Python 3中没有xrange,应使用range

正确实现代码

def sum_divisors(n):
    if n <= 0:
        return 0
    total = 0
    # 遍历1到n的一半(包含),因为最大的非自身约数不会超过n/2
    for i in range(1, n // 2 + 1):
        if n % i == 0:
            total += i
    return total

# 测试用例验证
print(sum_divisors(0))       # 输出0
print(sum_divisors(3))       # 输出1
print(sum_divisors(36))      # 输出55
print(sum_divisors(102))     # 输出114

代码解释

  1. 特殊情况处理:当n为0或负数时,直接返回0,符合题目要求
  2. 初始化累加变量:用total(避免和内置函数sum重名)存储约数和,初始值为0
  3. 遍历约数范围:从1遍历到n//2 + 1,确保不会遗漏所有可能的非自身约数
  4. 判断并累加约数:如果i是n的约数(即n % i == 0),就将i加到total中
  5. 返回结果:遍历完成后返回累加的总和

内容的提问来源于stack exchange,提问作者Noah Wright

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:50:48