Python练习题 014:完数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python练习题 014:完数相关的知识,希望对你有一定的参考价值。

【Python练习题 014】 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。

-----------------------------------------------------------

这题只要弄明白“完数”及其“因子”的概念,就不难。一开始我把“因子”理解为“质因子”,结果只算得出个6。后来才知道,只要数字a能被数字b整除,不论b是不是质数,都算是a的因子。比如:8的质因子是 2, 2, 2,但8的因子就包括 1,2,4。

这么算来,求解“因子”可就比“质因子”简单多了,因为不用担心质因子重复的问题。代码如下:

import math

for i in range(2, 1000):
    factors = []  #因子列表,i 每次循环都清空
    for j in range(1, math.floor(i/2)+1):
        if i%j == 0:
            factors.append(j)
    if sum(factors) == i:
        print(i, end=‘,‘)

输出结果如下:

6,28,496,

 

++++++++++++++++++++++++++++++++++++++

题目出处:编程语言入门经典100例【Python版】

以上是关于Python练习题 014:完数的主要内容,如果未能解决你的问题,请参考以下文章

Pythondemo实验20练习实例寻找“完数”

Python练习题 042:Project Euler 014:最长的考拉兹序列

python练习题程序19

JustOj 1032: 习题6.7 完数

Java50道经典习题-程序9 求完数

Python 输出完数?