求完數,首先確定什麼是完數:乙個數等於其所有因子之和的數就叫完數。
'''
自頂向下設計方法:
特點:先整體後區域性,先抽象後具體
編寫演算法求1000以內的完數,並按下面的格式輸出其因子:28 it`s factors are 1,2,4,7,14。
'''def
main()
: n =
int(
input
("請輸入n的值:"))
for i in
range(1
,n+1):
#從1到1000開始,逐個遍歷,找出其中的完數
result =
# 使用列表來存放乙個完數的所有因子
for j in
range(1
,int
(i/2)+
1):#因為該數因子不可能超過i/2,故找出該數i的所有因子,不包括該數自己本身
if i % j ==0:
if i % j ==0:
#將i的因子新增到列表中
if i ==
sum(result)
:#如果i等於列表中所有因子的和,則i就是完數
print
("完數:"
,i,"it`s factors are"
,result)
if __name__ ==
'__main__'
: main(
)
執行結果:
請輸入n的值:1000
完數: 6 it`s factors are [1,
2,3]
完數: 28 it`s factors are [1,
2,4,
7,14]
完數: 496 it`s factors are [1,
2,4,
8,16,
31,62,
124,
248]
演算法訓練 求1000以內的完數
刷題筆記 題目 問題描述 如果乙個數恰好等於它的所有因子 包括1但不包括自身 之和,則稱之為 完數 例如6的因子是1,2,3,且6 1 2 3,因此6是完數。編寫程式找出1000之內的所有完數。注意1不是完數。輸入格式 無輸出格式 如有多個完數,則分行輸出,每行輸出乙個完數。注意,不要輸出其他任何多...
找1000以內的完數
完數,是一些特殊的自然數,它所有的真因子 即除了自身以外的因子 的和,恰好等於它本身。所以這裡說明一下,1不是完數,因為1只有自身這乙個因子 第乙個完全數是6,第二個完全數是28,第三個完全數是496,後面的完全數還有8128 33550336等等。所以程式迴圈直接從數字2開始判斷 及執行結果如下 ...
如何找出 1000 以內的 完數
如果乙個數恰好等於它的因子之和,那麼這個數就被稱為 完數 如 6 1 2 3。程式設計找出 1000 以內的所有 完數 外層迴圈 998 次,每次迴圈得到的 i 傳入下個迴圈內,內部迴圈求解出符合 i 整除 k 等於 0 的數,如果能夠整除,那麼說明 k 是 i 的乙個因子,則用 sum 累加,直到...