一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如:6=1+2+3
代码:
from sys import stdout # 从sys载入stdout库
for j in range(2,10001): # 开始从2~1001的循环(不包含1001)
k = [] # 设定k的值
n = -1 # 设定n的值为-1
s = j # 设定s=j
for i in range(1,j): # 开始从1~j的循环(不包含j)
if j % i == 0: # 开始判断j/i的余数是否=0,若成立则j为完数
n += 1 # 若成立则n=n+1
s -= i # s=s-i
k.append(i) # 在k列表的结尾添加能被除尽的数字
#print(j,i,k)
if s == 0: # 开始判断s是否等于0
print (j) # 若成立则打出j
#for i in range(n): # 开始从0~n的循环
#stdout.write(str(k[i])) # 输出k[i]
#stdout.write(' ') # 输出空格,类似print('')
print(k) # 打出k
运行结果:
6
[1, 2, 3]
28
[1, 2, 4, 7, 14]
496
[1, 2, 4, 8, 16, 31, 62, 124, 248]