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

如何使用Python打印1到20范围内的所有完全数

1到20范围内完全数的实现方案

原代码存在的问题

  • 求和变量未重置:Sum 定义在while循环外部,每计算完一个数字的约数和后没有清零,旧值会累加到下一个数字的计算中,结果完全错误
  • 约数统计范围不符合定义:完全数要求除自身之外的所有正约数之和等于本身,原代码遍历范围包含了数字本身,会把自身计入约数和,逻辑不符合完全数的定义
  • 判断时机错误:原代码在遍历约数的过程中就执行相等判断,还未完成当前数字所有约数的求和就输出结果,会产生错误的中间输出

正确实现代码

# 遍历1到20的所有数字
for num in range(1, 21):
    divisor_sum = 0
    # 统计所有小于当前数的正约数的和
    for i in range(1, num):
        if num % i == 0:
            divisor_sum += i
    # 求和完成后判断是否为完全数
    if divisor_sum == num:
        print(num)

运行结果

输出仅为6,1到20范围内只有6是完全数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:36:03