一个数如果恰好等于它的因子之和,这个数就称为“完数” 。
例如, 6 的因子为 1、2、3,同时6=1+2+3,因此 6 是完数。
编程找出 1000 之内的所有完数,并输出该完数及对应的因子。
python实现:
1)使用lambda
from functools import reduce
for m in range(2,1001):
L = [1]
for n in range(2,int(m/2)+1):
if m%n==0:
L.append(n)
if m == reduce(lambda x,y:x+y,L):
print(m)
print(L)
2)使用def
from functools import reduce
def sum(a,b):
return a+b
for m in range(2,1001):
L = [1]
for n in range(2,int(m/2)+1):
if m%n==0:
L.append(n)
if m == reduce(sum,L):
print(m)
print(L)
结果:
6
[1, 2, 3]
28
[1, 2, 4, 7, 14]
496
[1, 2, 4, 8, 16, 31, 62, 124, 248]
更多文章请搜索公众号“StrongerTang”,众多资料分享,期待一起学习!