題目
如果一個數恰好等於它的因子之和,則稱該數為“完全數”,又稱完美數或完備數。例如:
第一個完全數是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()))