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

Python完美数判定算法重复打印结果,如何修正?

完美数判断代码的修正方案

原代码有两个主要问题,导致重复输出甚至报错:

  • 变量名不匹配:代码里用了未定义的n,但实际接收输入的变量是number,运行时会直接报错。
  • 判断逻辑放错位置:把判断是否为完美数的代码塞在了for循环里面,导致每遍历一个数就打印一次结果,出现一堆重复输出。

修正后的代码

number = int(input("Please, type a number to check if this is a perfect number: "))
test = 0
# 优化循环范围:真因数最大不会超过原数的一半,减少循环次数
for i in range(1, number // 2 + 1):
    if number % i == 0:
        test += i
# 等所有因数求和完成后,再统一判断输出
if test == number:
    print(number, "is a perfect number")
else:
    print(number, "is not a perfect number")

修正细节

  1. 变量名统一:把所有写错的n改成实际变量number,解决未定义变量的报错问题。
  2. 调整判断位置:把判断逻辑移到循环外面,等把所有真因数的和算完之后,只做一次判断和输出,彻底解决重复打印的问题。
  3. 循环范围优化:把循环从range(1, number)改成range(1, number//2 +1)——因为一个数的真因数不可能比它的一半还大(除了自身,但真因数不包含自身),这样能少跑一半的循环,效率更高。

测试输入6的话,代码会先算出1+2+3=6,循环结束后判断相等,只输出一次6 is a perfect number,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:35:13