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版】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM