如果一个自然数等于它的因子(包括1,不包括它本身)之和,则该数称之为“完数”。如6=1+2+3,则6是完数。编写程序,输出1000以内的完数,输出格式为“*=++…+*”。现想请教各位,如何输出符合题目要求的格式呢?
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])))
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(i,str(l).replace('[', '= ').replace(']', '').replace(',', ' +'))
给个例子:
for x in range (1,1001):
sum = 0
lst = []
for y in range(1,int(x/2)+1):
if x/y == int(x/y):
sum = sum + y
lst.append(y)
if sum == x:
print(x,end='=')
for i in range(len(lst)):
if i<len(lst)-1:
print(lst[i],end='+')
else:
print(lst[i])
Demo:
_list = [1, 2, 3]
number = 6
# 6=1+2+3
_str = "{left}={right}".format(left=number, right="+".join([str(x) for x in _list]))
print(_str)
Output
6=1+2+3