python求1000以内完数,输出格式为“**=1+*+*+…+*”。

如果一个自然数等于它的因子(包括1,不包括它本身)之和,则称该数为“完数”。如6=1+2+3,则6是完数。编写程序,输出1000以内的完数,输出格式为“**=1+++…+*”,重点在如何按格式输出?

for i in range(1, 1000):
    sum = 0
    l = []
    for j in range(1, i):
        if i%j == 0:
            sum += j;
            l.append(j)
    if sum == i:
        print("{left}={right}".format(left=i, right="+".join([str(x) for x in l])))

img

def f(n):
    x = [i for i in range(1, n) if n % i == 0]
    return x if sum(x) == n else []

for i in range(1, 1001):
    t = f(i)
    if t:print(f"{i}=" + '+'.join(map(str, t)))