初学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 完数有那么难么的主要内容,如果未能解决你的问题,请参考以下文章