求大神用Python2编写一个找前5个默尼森数的程序!

找前5个默尼森数。P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数。

yuantongxin
浏览 4206回答 3
3回答

清波

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了。。

慕粉3212516

def isprime(num):#判断素数的函数      count = num-1     while count>1:         if num%count==0 :             return(False)             else:                 count-=1     if count==1:         return (True) #开始判断 p=2 pnlist=[]  #存放默尼森数 while len(pnlist)<5:  #只要5 个,如果要多个,更改     if isprime(p):         pn=2**p-1         if isprime(pn):             pnlist.append(pn)     p+=1         print pnlist

yuantongxin

这五个数应为:3 7 31 127 8191
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python