编程求出1000以内的所有完数——python

完数:一个数如果恰好等于它的因子之和,这个数就是完数,如6=1+2+3.

整体思路

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

你可能感兴趣的:(作业题)