1. 程式人生 > 實用技巧 >Python程式設計題3--找出1000以內的完全數

Python程式設計題3--找出1000以內的完全數

題目

如果一個數恰好等於它的因子之和,則稱該數為“完全數”,又稱完美數或完備數。例如:
第一個完全數是6,它有約數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6。
第二個完全數是28,它有約數1、2、4、7、14、28,除去它本身28外,其餘5個數相加,1+2+4+7+14=28。
請按照從小到大的順序輸出 1000 以內的完全數,並用"逗號"分隔輸出結果

實現思路

  • 用第一層 for迴圈 控制1000以內的數,標記 i ,並通過變數 sum 來控制 i 的所有除 i 外的約數之和
  • 用第二層 for迴圈 控制 i 以內的數,標記 j
  • 如果 i 能 整除 j ,那麼 j 就是 i 的一個約數,如果 sum = i ,則表示 i 是完全數
  • 先把完全數轉為字串型別,再新增到列表中
  • 對結果進行處理,通過 join() 方法用 "," 拼接

注意:使用 join() 拼接列表時,列表中的元素不能是 int 型別。

程式碼實現

def demo():
    result = []
    for i in range(1, 1000):
        sum = 0
        for j in range(1, i):
            if i % j == 0:
                sum += j
        if sum == i:
            result.append(str(i))
    return ",".join(result)

print("1000以內的完全數有:{}".format(demo()))