用python3尋找1000以內的完數

2021-10-10 08:34:16 字數 1004 閱讀 7243

題目:乙個數恰好等於它的因子之和,這個數就稱之為完數例如:6 = 1+2+3請找出1000以內的所有完數,可以參照尋找因式分解的程式。

結果:6,28,496

方法一:

import math

for i in

range(2

,1001):

#1 factor =

num =

0for l in

range(1

,int

(math.sqrt(i)+1

)):#2

if i % l ==0:

for m in factor:

#3if m != i:

num += m

if num == i :

print

("找到乙個完數:"

,i)

方法二:

for i in

range(2

,1001):

#1 factor =

num =

0for l in

range(1

,i+1):

#2if i % l ==0:

for m in factor:

#3if m != i:

num += m

if num == i :

print

("找到乙個完數:"

,i)

思維拓展:在進行第一次嘗試時,2處的限定迴圈範圍為(1,數字本身)因為我獲取因數的方式,這樣就導致了得到的陣列**現了重複的因數對,在這裡我想到了兩個解決辦法,

第一,限定迴圈範圍,更改為(1,數字本身開根號)

第二,每次只獲取乙個數字,

兩種方法都面臨乙個問題,我將要得到一對特殊的因數對,1和這個數字本身,在這裡我選擇了直接剔除數字本身, 另外還想到了一種麻煩的解決辦法,排序,剔除陣列的第一位或者最後一位,嗯~ o( ̄▽ ̄)o,仔細想想,不可取pass

PYTHON3的dnspython模組用法

因為平時在測試dns的時候有些操作手動完成不方便,所以需要用到指令碼,而在python裡dnspython這個用於dns操作的庫十分強大,但是無奈網上大部分資料只列舉了少部分的用法,所以記錄一下我平時使用到的功能,基本上已經能應付大部分的使用場景了。想具體了解dnspython可以登入官方 閱讀使用...

python尋找1000以內的阿姆斯特朗數

阿姆斯特朗數定義 如果乙個n位正整數等於其各位數字的n次方之和,則稱該數為阿姆斯特朗數。例如1 3 5 3 3 3 153。1000以內的阿姆斯特朗數 1,2,3,4,5,6,7,8,9,153,370,371,407。核心 為 length len str num num是輸入的數字,型別為int...

python3 切片 python3 切片

取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。取前n...