1、對於兩個不同的整數A和B,如果整數A的全部因子(包括1,不包括A本身)之和等於B;且整數B的全部因子(包括1,不包括B本身)之和等於A,則將A和B稱為親密數。自定義函數fac(x)計算x包括1但不包括本身的所有因子和並返回。從鍵盤輸入整數n,調用fac()函數尋找n以內的親密數並輸出。注意每個親密數對只輸出一次,小的在前大的在后,例如220-284。
def fac(num):
for j in range(2,num+1):
a = 0
b = 0
for i in range(1,j):
if j % i == 0:
a = a + i
for c in range(1,a):
if a % c == 0:
b += c
if j == b and b != a:
if j < a:
print("{0}-{1}".format(j,a))
2、找第n個默尼森數。P是素數且M也是素數,並且滿足等式M=2^P-1,則稱M為默尼森數。例如,P=5,M=2^P-1=31,5和31都是素數,因此31是默尼森數
def prime(num):
if num == 1:
print(num)
else:
for i in range(2,num):
if num % i == 0:
break
else:
return 1
def monisen(no):
a = 2
b = 1
while b <= no:
if prime(a):
c = 2 ** a - 1
if prime(c):
b += 1
a += 1
print(c)