"""
一个数如果恰好等于它的因子之和,这个数就称为"完数"。
例如,6=1+2+3,找出1000以内的所有完数。
"""
def factor(num):
"""
计算给定数字的所有因子(不包含自身),并返回这些因子的集合。
参数:
num (int): 需要计算因子的整数。
返回:
set: 一个包含num的所有因子(不包含num自身)的集合。
"""
result = set() # 使用集合存储因子,以避免重复
for i in range(1, num):
# 如果i是num的因子,则将i和num/i加入结果集合
if num % i == 0:
result.add(i)
result.add(num // i)
return result
# 循环遍历2到1000的所有数字,检查其因子之和是否等于数字本身
for n in range(2, 1001):
# 如果数字的因子之和等于数字本身(不包含自身),则打印该数字
if n == sum(factor(n)) - n:
print(n)
完数 找出1000以内的所有完数
未经允许不得转载:创想未来 » 完数 找出1000以内的所有完数
评论前必须登录!
注册