import math
## 定义 素数 判断函数
def isprime(n):
if n!=int(n) or n<2: ## 此处稍作改进
return False
for i in range(2,int(math.sqrt(n)+1)):
if n % i ==0:
return False
return True
## 定义 默尼森数 判断函数
def ismonisen(n):
if isprime(math.log(n+1,2)) and isprime(n):
return True
return False
## 至此,准备工作完毕, 也定义一个获取 默尼森数的函数吧,这次传进去 个整数,返回该数量的 默尼森数 列表:
def get_monisen(n):
if n!= int(n) or n<1:
return []
x=3
result=[3]
while True:
if isprime(x) and isprime(2**x-1):
result.append(2**x-1)
if len(result)==n:
return result
x+=2
## 测试:
print (get_monisen(8))修改了 log , Python2 实测可用。再次修改,优化 get_monisen() 函数, 总算能算到8了。。