可能出现问题的原因是程序没有正确检测并填充完全数。以下是一个更新的
def is_perfect(n):
divisors = [i for i in range(1, n) if n % i == 0]
if sum(divisors) == n:
return True
return False
numbers = []
count = 0
i = 1
while count < 10:
if is_perfect(i):
numbers.append(i)
count += 1
i += 1
print(numbers)
这个解决方法包括两个主要部分:
is_perfect
函数用于检测一个数是否为完全数。如果是完全数,函数将返回 True,否则返回 False。
主循环用于寻找完全数并将它们添加到数组中。我们使用了一个 count
变量来跟踪添加到数组中的完全数的数量。一旦我们找到10个完全数,主循环将停止并打印出数组。
这个更新后的程序应该能够正确地填充数组并打印出包含完全数的列表。