亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求大神用Python2編寫一個找前5個默尼森數的程序!

求大神用Python2編寫一個找前5個默尼森數的程序!

yuantongxin 2016-04-21 13:05:12
找前5個默尼森數。P是素數且M也是素數,并且滿足等式M=2**P-1,則稱M為默尼森數。例如,P=5,M=2**P-1=31,5和31都是素數,因此31是默尼森數。
查看完整描述

3 回答

已采納
?
清波

TA貢獻165條經驗 獲得超90個贊

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

查看完整回答
反對 回復 2016-04-21
?
慕粉3212516

TA貢獻2條經驗 獲得超0個贊

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


查看完整回答
反對 回復 2016-04-24
?
yuantongxin

TA貢獻10條經驗 獲得超5個贊

這五個數應為:3 7 31 127 8191

查看完整回答
反對 回復 2016-04-21
  • 3 回答
  • 2 關注
  • 4264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號