如何使用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
相关产品推荐
相关产品推荐

