題目:乙個數恰好等於它的因子之和,這個數就稱之為完數例如: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...