if __name__ == '__main__':
for n in range(1,1000):
f=[] #声明一个list用于存储所有因子,判定下一个数时,清空
sumn=0 #每次判定下一个数是否为完数前,清空
for i in range(1,int(n/2)+1): #因子只有在数值一半以内出现,PS:“/"结果是浮点数,range函数参数必须为整数,所以强制转换
if n%i==0 : #表明i是因子
f.append(i) #保存因子
for j in range(0,len(f)):
sumn+=f[j] #求出所有因子之和
if sumn==n:
print('%3d = %3d'%(sumn,f[0]),end='') #end=‘’表示可将多个print结果在同行打印
for k in range(1,len(f)):
print(' + %3d' % f[k],end='')
print('')
运行结果:
>>>
==================== RESTART: D:/PythonTraining/wanshu.py ====================
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248