开发者社区> 问答> 正文

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

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

展开
收起
珍宝珠 2019-11-19 15:39:37 3097 0
2 条回答
写回答
取消 提交回答
  • 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)
    
    2020-02-03 18:16:04
    赞同 展开评论 打赏
  • #!/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
    
    2019-11-19 15:40:02
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载