第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

求大神用Python,找前5個(gè)默尼森數(shù)!

求大神用Python,找前5個(gè)默尼森數(shù)!

yuantongxin 2016-04-20 11:14:00
找前5個(gè)默尼森數(shù)。P是素?cái)?shù)且M也是素?cái)?shù),并且滿足等式M=2**P-1,則稱M為默尼森數(shù)。例如,P=5,M=2**P-1=31,5和31都是素?cái)?shù),因此31是默尼森數(shù)。
查看完整描述

5 回答

已采納
?
清波

TA貢獻(xiàn)165條經(jīng)驗(yàn) 獲得超90個(gè)贊

從另外一個(gè)問題中 搬來 素?cái)?shù)判斷:

import?math
??
??
##?定義?素?cái)?shù)?判斷函數(shù)
def?isprime(n):
????if?n!=int(n)?or?n<2:??##?此處稍作改進(jìn)
????????return?False
????for?i?in?range(2,int(math.sqrt(n)+1)):
????????if?n?%?i?==0:
????????????return?False
????return?True
?????
?????
##?定義?默尼森數(shù)?判斷函數(shù)
def?ismonisen(n):
????if?isprime(math.log(n+1,2))?and?isprime(n):
????????return?True
????return?False
?????
?
##?至此,準(zhǔn)備工作完畢,?也定義一個(gè)獲取?默尼森數(shù)的函數(shù)吧,這次傳進(jìn)去?個(gè)整數(shù),返回該數(shù)量的?默尼森數(shù)?列表:
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
?????
?
##?測(cè)試:
print?(get_monisen(8))

[3,?7,?31,?127,?8191,?131071,?524287,?2147483647]


算是寫完了,做了一些無謂的判斷, 習(xí)慣使然。 ?結(jié)果題主驗(yàn)證下,如果不對(duì)的話,我可以接著修改。。

再次修改, 優(yōu)化get_monisen(), 可以算到8了。。

查看完整回答
3 反對(duì) 回復(fù) 2016-04-20
  • yuantongxin
    yuantongxin
    有異常; NameError: global name 'log' is not defined
  • 清波
    清波
    恩, log 少寫了, 應(yīng)該是 math.log , 在 def ismonisen 中
  • 清波
    清波
    再次修改 get_monisen 函數(shù),充分利用函數(shù)的 return 終止函數(shù)的功能,減少冗余代碼。
?
再見你

TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超1個(gè)贊

寫了一個(gè),但不是很簡(jiǎn)便,如果有更好的方式,請(qǐng)告訴一下,謝謝。

import?math
a=0
b=1
L=[]
def?sushu(b):
	for?x?in?range(1,int(math.sqrt(b)+1)):
		if?x!=1?and?b%x==0:
			return?False
	return?True
while?True:
	if(a==5):
		break
	if?sushu(b):
		c=2**b-1
		if?sushu(c)?and?b!=c:
			L.append(c)
			a=a+1
	b=b+1
print?(L)


抱歉,以上代碼修改了一下,請(qǐng)?jiān)僭囈幌?/p>

查看完整回答
1 反對(duì) 回復(fù) 2016-04-20
?
vero愛慕課

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

import math


def prime(num):

? ? if num != int(num)?or?num < 2:

? ? ? ? return 0

? ? max = int(math.sqrt(num))

? ? for i in range(2,max+1):

? ? ? ? if num % i == 0:

? ? ? ? ? ? return 0

? ? return 1


def monisen(no):

? ? i = 0

? ? p = 1

? ? x = []

? ? while True:

? ? ? ? if prime(p):?

? ? ? ? ? ? if prime(2**p-1):?

? ? ? ? ? ? ? ? m = 2**p-1?

? ? ? ? ? ? ? ? x.append(m)

? ? ? ? ? ? ? ? i += 1

? ? ? ? ? ? ? ? if i == no:?

? ? ? ? ? ? ? ? ? ? return x?

? ? ? ? ? ? ? ? else:

? ? ? ? ? ? ? ? ? ? p += 1

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? ? ? p += 1

? ? ? ? else:

? ? ? ? ? ? p += 1?


print(monisen(int(input())))

尋找前n個(gè)默尼森數(shù)的程序,鍵入8,結(jié)果為:[3,?7,?31,?127,?8191,?131071,?524287,?2147483647]


查看完整回答
反對(duì) 回復(fù) 2017-08-09
?
qq_滿兒燕_04214753

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

from math import sqrt

def isprime(x):

? ? if x==1:

? ? ? ? return False

? ? k=int(sqrt(x))

? ? for j in range(2,k+1):

? ? ? ? if x%j==0:

? ? ? ? ? ? return False

? ? return True

__________________________________________________________________

def monisen():

? ? sum=0

? ? P=2

? ? print 'P M'

? ? while True:

? ? ? ? if isprime(P):

? ? ? ? ? ? M=2**P-1

? ? ? ? ? ? if isprime(M):

? ? ? ? ? ? ? ? print P,M

? ? ? ? ? ? ? ? sum+=1

? ? ? ? ? ? ? ? if sum==5:

? ? ? ? ? ? ? ? ? ? break ? ? ? ? ? ?

? ? ? ? P+=1 ? ?

___________________________________________________________________

調(diào)用:

>>> monisen()

P M

2 3

3 7

5 31

7 127

13 8191




查看完整回答
反對(duì) 回復(fù) 2016-10-16
?
UPC周偉偉

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

import?math

def?isPrime(n):
????'judge?a?number?is?a?prime'
????if?n==1:
????????return?False
????k=int(math.sqrt(n))
????for?i?in?range(2,k+1):
????????if?n%i==0:
????????????return?False
????????????break
????return?True
????
def?getMonisen():
????count=0
????list=[]
????P=2
????while?True:
????????if?isPrime(P):
????????????M=2**P-1
????????????if?isPrime(M):
????????????????list.append(M)
????????????????count+=1
????????????????if?count==5:
????????????????????break
????????P+=1
????return?list
????
list=getMonisen()
print?list


查看完整回答
反對(duì) 回復(fù) 2016-04-24
  • 5 回答
  • 1 關(guān)注
  • 12063 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)