找前5个默尼森数。P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数。
1 # coding:utf-8 2 import math 3 4 def isPrime(n): 5 if n != int(n) or n <= 1: 6 return False #确保n是正整数 7 i = 2 8 while i*i <= n: 9 if n % i == 0: 10 return False 11 i += 1 12 return True 13 14 def judge_mns(n): 15 if isPrime(n) and isPrime(math.log(n + 1, 2)): 16 return True 17 return False 18 19 def get_mns(n): 20 if n != int(n) or n < 1: 21 return [] 22 x = 2 23 mns_number = [] 24 while True: 25 if judge_mns(x): 26 mns_number.append(x) 27 if len(mns_number) == n: 28 break 29 x += 1 30 return mns_number 31 32 print get_mns(5)
事实上一开始不明白怎么判断素数 蛤蛤蛤 在网上看了别人的弄了好久才明白。