找前5个默尼森数。P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数。
# coding:utf-8
import math def isPrime(n):
if n != int(n) or n <= 1:
return False #确保n是正整数
i = 2
while i*i <= n:
if n % i == 0:
return False
i += 1
return True def judge_mns(n):
if isPrime(n) and isPrime(math.log(n + 1, 2)):
return True
return False def get_mns(n):
if n != int(n) or n < 1:
return []
x = 2
mns_number = []
while True:
if judge_mns(x):
mns_number.append(x)
if len(mns_number) == n:
break
x += 1
return mns_number print get_mns(5)
事实上一开始不明白怎么判断素数 蛤蛤蛤 在网上看了别人的弄了好久才明白。