pthon實現查詢梅森素數

2021-10-03 16:42:44 字數 1087 閱讀 5897

(梅森素數)如果乙個素數可以寫成2p−

12^p-1

2p−1

形式,其中p是乙個正整數, 那麼該數就稱作梅森素數

這個比較有意思

函式功能是查詢n範圍內的梅森素數

先打出素數表

然後對每個素數這樣判斷

我們已知假設n是梅森素數,則n=2

p−

1n=2^p-1

n=2p−1

很顯然 n+1

=2

pn+1=2^p

n+1=2p

既然n+1是2的p次冪,那用位運算子就很好判斷了

2的p次冪,在二進位制中,只有最高位為1,其餘全都為0

下面解釋關鍵的位運算操作

x-1會把乙個數的最低位的1變成0

x&x-1的操作會得到乙個新的數,這個數相對於x來說,只是把x的最低位變為為0

按照以上性質 我們可以很快地驗證它是否是梅森素數

之所以寫成 n+1-1主要是方便閱讀

def

f35(n)

: primes =

[i for i in

range(2

, n +1)

if0notin

[i % j for j in

range(2

,int

(math.sqrt(i))+

1)]]

# print(primes)

ans =

print

(" "

.format

('p'

,'n'))

for n in primes:if(

(n +1)

&(n +1-

1)==0

):#關鍵 p=

len(

bin(n)[2

:])-

1print

(" "

.format

(p,n)

)print

(ans)

n的範圍為10000時的執行結果

梅森素數c 實現

梅森數 mersenne prime 指的是形如2 n 1的正整數,其中指數 n 是素數,即為。如果乙個梅森數是素數,則稱其為梅森素數。當n 2,3,5,7時,都是素數,但n 11時,顯然不是梅森素數。1722年,瑞士數學大師尤拉證明了 是乙個素數,它共有 10 位數,成為當時世界上已知的最大素數。...

梅森素數彙總

第9個梅森素數 當p 61時,m 61 2 61 1,位數為19位,由pervushin發現於公元1883年。第10個梅森素數 當p 89時,m 89 2 89 1,位數為27位,由powers發現於公元1911年。第11個梅森素數 當p 107時,m 107 2 107 1,位數為33位,由pow...

數論 梅森素數

定義 lucas lehmer判定法 判定乙個梅森數是否是梅森素數 設p是素數,第p個梅森數為m p 為2 p 1,r1 4,對於k 2 r k r k 1 2 2 modm p 0 r k m p 可以得到r k 序列,則有m p 是素數,當且僅當r p 1 0 mod m p 如下 includ...