1. 程式人生 > >Python練習(2)

Python練習(2)

問題描述:

220的真因數之和為1+2+4+5+10+11+20+22+44+55+110=284 ,
284的真因數之和為1+2+4+71+142=220 ,
畢達哥拉斯把這樣的數對A、B稱為相親數:A的真因數之和為B,而B的真因數之和為A。
求100000以內的相親數。

程式碼

#與[上題](https://blog.csdn.net/qq_43243022/article/details/82859185)類似,不過是函式裡巢狀函式
def xiangqin(n):	#構造求約數和的函式
    a=[]
    b=[]
    for i in range(1,n):
        if n%i==0:
            a.append(i)
    return sum(a) 

for k in range(1,100000):		
    d=xiangqin(k)
    if xiangqin(d)==k and d<k:		#呼叫函式,求約數和 的 約數和
        print(k,d)
(284, 220)
(1210, 1184)
(2924, 2620)
(5564, 5020)
(6368, 6232)
(10856, 10744)
(14595, 12285)
(18416, 17296)
(66992, 66928)
(71145, 67095)
(76084, 63020)
(87633, 69615)
(88730, 79750)
......

if 判斷時,冒號後面必須要加執行模組 邏輯運算子

if a and b:
if a or b:
if not(a and b):

成員運算子

if (a in list):
if (a not in list):