(梅森素數)如果乙個素數可以寫成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...