初学python算法100例-案例18 完数有那么难么

Posted 技术专家团-小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学python算法100例-案例18 完数有那么难么相关的知识,希望对你有一定的参考价值。

题目:求完数

一个数如果恰好等于它的因子之和,这个数就称为"完数"

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

解法1 列表实现

程序分析

1、依次遍历1000以内的所有数字

2、对取出的数字进行求因子,最大范围取出数字的一半

3、将求得的因子加入到一个列表中

4、判断这个数是否等于列表中元素的和

5、如果是就输出这个数和相应的因子

源程序

list2 = []
for x in range(1, 1001):
    list1 = []
    for i in range(1, int(x / 2) + 1):
        if x % i == 0:
            list1.append(i)
    if x == sum(list1):
        print(x)
        print(list1)
        list2.append(x)
print("共计有%d个完数"%(len(list2)))

运行结果

 

解法2 stdout函数

源程序

from sys import stdout
count = 0
for num in range(2,1001):
    l = []
    n = -1
    m = num
    for i in range(1,num):
            if num % i == 0:
                n += 1
                m -= i
                l.append(i)    
    if m == 0:
        count+=1
        print (num)
        for i in range(n):
            stdout.write(str(l[i]))
            stdout.write(' ')            
        print (l[n])
print("共计有%d个完数"%(count))

运行结果

还有更多其他的解法,欢迎一起交流学习

以上是关于初学python算法100例-案例18 完数有那么难么的主要内容,如果未能解决你的问题,请参考以下文章

初学python算法100例-案例30 计算闰年

初学python算法100例-案例28 逆序输出每位数字

初学python算法100例-案例23 输出菱形

初学python算法100例-案例9 间隔1秒输出结果

初学python算法100例-案例29 判断回文数

初学python算法100例-案例25 阶层求和 学完你也会