python练习题(十四):找出1000以内的所有完数

# 题目:
# 一个数如果恰好等于它的因子之和,这个数就称为"完数"。
# 例如6=1+2+3.
# 编程找出1000以内的所有完数。

from functools import reduce

for i in range(2, 1001):
    a_list = [1]
    for j in range(2, i):
        if i % j == 0:
            a_list.append(j)
    if i == reduce(lambda x, y: x + y, a_list):
        print(i, end='\t')
        print("%d = %d" %(i, a_list[0]), end='')
        for n in range(1, len(a_list)):
            print("+%d" % a_list[n], end='')
        print()

运行结果:
在这里插入图片描述

发布了37 篇原创文章 · 获赞 0 · 访问量 419

猜你喜欢

转载自blog.csdn.net/yizhishuixiong/article/details/104915925