python求梅森尼數 梅森尼數

2021-10-11 21:59:10 字數 1143 閱讀 8005

問題描述:

法國數學家梅森尼對這類形如2^n-1的素數特別感興趣,做過很多有意義的工作,後人把此類數命名為梅森尼數。

已經證明了,如果2^n-1是素數,則冪指數n必須是素數,然而,反過來並不對,當n是素數時,2^n-1不一定是素數。例如,人們已經找出2^11-1是乙個合數,23可以除盡它,2^23-1是乙個合數,47可以除盡它。

程式設計找出指數n在(2,50)中的梅森尼數。

我的**:import math

def prime(m):

count=0

for i in range(2,int(math.sqrt(m))+1):

if m%i==0:

count=1

if count==0:

return true

else:

return false

for j in range(2,50):

if prime(2**j-1) and prime(j):

print j,2**j-1

結果:冪   梅森尼數

2     3

3     7

5     31

7     127

13    8191

17    131071

19    524287

31    2147483647

我的思路:

過程很簡單,就是定義乙個函式用來判斷傳入的引數是否為素數,然後遍歷2到50之間的數,輸出同時滿足指數是素數,對應的2^n-1也是素數的數即可;

示例**:import math

def isprimenumber(num):

i = 2

x = math.sqrt(num)

while i <= x:

if num%i == 0:

return false

i += 1

return true

def masonnumber(num):

arr = 

for i in xrange(2, num + 1):

if isprimenumber(i) and isprimenumber(2**i - 1):

return arr

print masonnumber(50)

2 4演算法 列舉 梅森數

形如2n 1的素數稱為梅森數 mersenne number 例如2 2 2 3 1 7都是梅森數。1722年,雙目失明的瑞士數學大師尤拉證明了2 31 1 2147483647是乙個素數,堪稱當時世界上 已知最大素數 的乙個記錄。本題要求編寫程式,對任一正整數n n 20 輸出所有不超過2 n 1...

實驗4 2 9 梅森數 20分

形如2 n 1的素數稱為梅森數 mersenne number 例如2 2 1 3 2 3 1 7都是梅森數。1722年,雙目失明的瑞士數學大師尤拉證明了2 31 1 2147483647是乙個素數,堪稱當時世界上 已知最大素數 的乙個記錄。本題要求編寫程式,對任一正整數n n 20 輸出所有不超過...

實驗4 2 9 梅森數 20分

形如2n 1的素數稱為梅森數 mersenne number 例如22 1 3 23 1 7都是梅森數。1722年,雙目失明的瑞士數學大師尤拉證明了231 1 2147483647是乙個素數,堪稱當時世界上 已知最大素數 的乙個記錄。本題要求編寫程式,對任一正整數n n 20 輸出所有不超過2n 1...