完数:一个数如果恰好等于它的因子之和,这个数就是完数,如6=1+2+3.
整体思路
- 首先找出任意一个数的所有因子【因子就是所有可以整除这个数的数,不包括自身】
def wan_num(n):
for i in range(1, n):
if n % i == 0:
yield i
- 将所有因子相加,看是否等于这个数
n = 1000
result = {}
for i in range(1, 1000):
L = wan_num(i)
L1 = list(L)
if i == sum(L1):
print("this is OK")
result[i] = L1
- 输出结果
print(result)
{496: [1, 2, 4, 8, 16, 31, 62, 124, 248], 28: [1, 2, 4, 7, 14], 6: [1, 2, 3]}
- 总结:程序写的low了点,以后抽空改进哇,实在没时间处理了!另外也没有严格检查结果是否正确,大家自己琢磨修改去吧。