【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,
++++++++++++++++++++++++++++++++++++++