6=1+2+3.编程找出1000以内的所有完数。-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

6=1+2+3.编程找出1000以内的所有完数。

珍宝珠 2019-11-19 15:39:37 375

6=1+2+3.编程找出1000以内的所有完数。

分享到
取消 提交回答
全部回答(2)
  • june-fu
    2020-02-03 18:16:04
    from functools import reduce
    
    def is_perfect_number2(num):
        if num == reduce(lambda x, y: x + y, [x for x in range(1, num) if not num % x]):
            return True
        else:
            return False
    
    
    if __name__ == '__main__':
        for i in range(2, 1001):
            if is_perfect_number2(i):
                print(i)
    
    0 0
  • 珍宝珠
    2019-11-19 15:40:02
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    from sys import stdout
    for j in range(2,1001):
        k = []
        n = -1
        s = j
        for i in range(1,j):
                if j % i == 0:
                    n += 1
                    s -= i
                    k.append(i)
       
        if s == 0:
            print j
            for i in range(n):
                stdout.write(str(k[i]))
                stdout.write(' ')
            print k[n]
    
    

    以上实例输出结果为:

    6
    1 2 3
    28
    1 2 4 7 14
    496
    1 2 4 8 16 31 62 124 248
    
    0 0
添加回答
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

相似问题