国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、摘要

????????大數(shù)素性檢測(cè)一直是數(shù)論界、密碼學(xué)界等經(jīng)久不衰的研究方向,實(shí)現(xiàn)大數(shù)素性檢測(cè)的算法也在不斷地被改進(jìn)。目前已經(jīng)出現(xiàn)了很多大數(shù)素性檢測(cè)的算法,而Miller-Rabin算法在其中顯得十分耀眼。本文調(diào)研了常見(jiàn)的大素?cái)?shù)判斷算法,并詳細(xì)介紹了Miller-Rabin大素?cái)?shù)判斷算法的原理,然后結(jié)合相關(guān)的數(shù)論知識(shí),以生成一個(gè)512bits的大素?cái)?shù)為例,編程實(shí)現(xiàn)了該大素?cái)?shù)判斷算法。

二、引言

i.研究的問(wèn)題及其背景

????????素?cái)?shù)是除了自身和1以外,沒(méi)有其他素?cái)?shù)因子的自然數(shù)。在我們以前的數(shù)學(xué)學(xué)習(xí)過(guò)程中,我們知道了很多素?cái)?shù)。但這些我們認(rèn)知范圍內(nèi)的素?cái)?shù),無(wú)論是在數(shù)值還是個(gè)數(shù)方面,相對(duì)于整個(gè)素?cái)?shù)集,都是十分受限的。自從歐幾里得證明了有無(wú)窮個(gè)素?cái)?shù)以后,人們就企圖尋找一個(gè)可以構(gòu)造所有素?cái)?shù)的公式,尋找判定一個(gè)自然數(shù)是不是素?cái)?shù)的方法。尤其是對(duì)于一個(gè)數(shù)值很大的數(shù),要判斷其是否為素?cái)?shù),單靠直覺(jué)或者查詢相關(guān)素?cái)?shù)表是遠(yuǎn)遠(yuǎn)達(dá)不到我們的期望的。而素?cái)?shù)的應(yīng)用十分廣泛,地位尤其重要,因此確定一個(gè)大數(shù)是否為素?cái)?shù)是數(shù)學(xué)發(fā)展史上一個(gè)無(wú)法回避的問(wèn)題。故而,大素?cái)?shù)的檢測(cè)方法應(yīng)運(yùn)而生,并隨著時(shí)間的推移而快速發(fā)展。

????????素性檢測(cè)可分為兩大類,即確定性素性檢測(cè)和隨機(jī)素性檢測(cè)。前者可給出確定的結(jié)果但通常較慢,后者則與之相反。本篇文章主要介紹三種常見(jiàn)的大素?cái)?shù)判斷算法,并給出Miller-Rabin算法的編程實(shí)現(xiàn)。

ii.研究的目的及其意義

????????素?cái)?shù)在密碼學(xué)中發(fā)揮著十分重要的作用。密碼學(xué)完全是關(guān)于數(shù)論的,所有整數(shù)(0和1除外)都由質(zhì)數(shù)組成,因此在數(shù)論中處理質(zhì)數(shù)很多。素?cái)?shù)被利用在密碼學(xué)上,所謂的公鑰就是將想要傳遞的信息在編碼時(shí)加入質(zhì)數(shù),編碼之后傳送給收信人,任何人收到此信息后,若沒(méi)有此收信人所擁有的密鑰,則解密的過(guò)程中(實(shí)為尋找素?cái)?shù)的過(guò)程),將會(huì)因?yàn)檎屹|(zhì)數(shù)的過(guò)程(分解質(zhì)因數(shù))過(guò)久,使即使取得信息也會(huì)無(wú)意義。

????????給出兩個(gè)大素?cái)?shù),很容易就能將它們兩個(gè)相乘。但是,給出它們的乘積,找出它們的因子就顯得不是那么容易了。這就是許多現(xiàn)代密碼系統(tǒng)的關(guān)鍵所在。如果能夠找到解決整數(shù)分解問(wèn)題的快速方法,幾個(gè)重要的密碼系統(tǒng)將會(huì)被攻破,包括RSA公鑰算法和Blum Blum Shub隨機(jī)數(shù)發(fā)生器。盡管快速分解是攻破這些系統(tǒng)的方法之一,仍然會(huì)有其它的不涉及到分解的其它方法。所以情形完全可能變成這樣:整數(shù)分解問(wèn)題仍然是非常困難,這些密碼系統(tǒng)卻是能夠很快攻破。有的密碼系統(tǒng)則能提供更強(qiáng)的保證:如果這些密碼系統(tǒng)被快速破解(即能夠以多項(xiàng)式時(shí)間復(fù)雜度破解),則可以利用破解這些系統(tǒng)的算法來(lái)快速地(以多項(xiàng)式時(shí)間復(fù)雜度)分解整數(shù)。換句話說(shuō),破解這樣的密碼系統(tǒng)不會(huì)比整數(shù)分解更容易。這樣的密碼系統(tǒng)包括 Rabin密碼系統(tǒng)(RSA的一個(gè)變體),以及 Blum Blum Shub 隨機(jī)數(shù)發(fā)生器。

????????對(duì)一個(gè)很大的數(shù)進(jìn)行素性判斷,對(duì)于解決整數(shù)分解問(wèn)題是有極大的助推作用的,也是一個(gè)十分關(guān)鍵的環(huán)節(jié)??梢哉f(shuō),如果我們能夠首先快速準(zhǔn)確地解決大數(shù)素性檢測(cè)的問(wèn)題,那么才會(huì)有找到解決整數(shù)分解問(wèn)題的快速方法的可能。因此本次研究Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)是很有實(shí)際意義的。

三、研究方法和研究過(guò)程

????????本次研究,我主要使用了文獻(xiàn)研究法、經(jīng)驗(yàn)總結(jié)法和實(shí)驗(yàn)研究法。首先通過(guò)閱讀大量相關(guān)的文獻(xiàn),形成對(duì)大素?cái)?shù)判斷算法的科學(xué)認(rèn)識(shí);然后總結(jié)出前人研究大素?cái)?shù)判斷算法的一些寶貴經(jīng)驗(yàn),在此基礎(chǔ)上編寫(xiě)代碼并運(yùn)行,根據(jù)運(yùn)行結(jié)果不斷改進(jìn)程序,最終實(shí)現(xiàn)了Miller-Rabin大素?cái)?shù)判斷算法。

下面是研究的內(nèi)容和過(guò)程:

1.三種大素?cái)?shù)判斷算法

????????我調(diào)研了三種大素?cái)?shù)判斷算法,它們分別是:費(fèi)馬(Fermat)素性檢驗(yàn)、Miller-Rabin素?cái)?shù)測(cè)試算法和AKS素?cái)?shù)測(cè)試。前面兩者屬于隨機(jī)素性檢測(cè),而AKS屬于確定性素性檢測(cè)。

i.費(fèi)馬(Fermat)素性檢驗(yàn)

????????費(fèi)馬素性檢驗(yàn)是一種素?cái)?shù)判定法則,利用隨機(jī)化算法判斷一個(gè)數(shù)是合數(shù)還是可能是素?cái)?shù)。

費(fèi)馬素性檢驗(yàn)的原理如下:

????????根據(jù)費(fèi)馬小定理:如果p是素?cái)?shù),1<=a<=p-1,那么有Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn) 。如果我們想知道n是否是素?cái)?shù),我們?cè)谥虚g選取a,看看上面等式是否成立。如果對(duì)于數(shù)值a等式不成立,那么n是合數(shù)。如果有很多的a能夠使等式成立,那么我們可以說(shuō)n可能是素?cái)?shù),或者偽素?cái)?shù)。

????????在我們檢驗(yàn)過(guò)程中,有可能我們選取的a都能讓等式成立,然而n卻是合數(shù)。這時(shí)等式Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)? 被稱為Fermat liar。如果我們選取滿足下面等式的a: Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn),那么a也就是對(duì)于n的合數(shù)判定的Fermat witness。

????????由于費(fèi)馬小定理的逆定理并不正確,對(duì)于卡邁克爾數(shù)即滿足費(fèi)馬小定理的逆定理但是不為素?cái)?shù)的數(shù),雖然卡邁克爾數(shù)很少,在1~100000000范圍內(nèi)的整數(shù)中,只有255個(gè)卡邁克爾數(shù),但是已經(jīng)使他的效果落后于Miller-Rabin和Solovay-Strassen素性檢驗(yàn)。

????????由于屬于隨機(jī)性算法,故費(fèi)馬素性檢驗(yàn)并不是保證完全正確的。在選取底數(shù)a時(shí),有二分之一的概率出錯(cuò),但是可以通過(guò)多次選取底數(shù)來(lái)使出錯(cuò)概率降下期望值。

????????在重復(fù)k次成立的情況下,n為合數(shù)的可能性小于1/2k。

ii.AKS素?cái)?shù)測(cè)試

????????AKS素?cái)?shù)測(cè)試是一個(gè)決定型素?cái)?shù)測(cè)試算法 ,由三個(gè)來(lái)自印度坎普爾理工學(xué)院的計(jì)算機(jī)科學(xué)家在2002年8月6日發(fā)表于一篇題為素?cái)?shù)屬于P的論文。這個(gè)算法可以在多項(xiàng)式時(shí)間之內(nèi),決定一個(gè)給定整數(shù)是素?cái)?shù)或者合數(shù)。

????????AKS 素?cái)?shù)測(cè)試主要是基于以下定理:整數(shù)n(≥ 2)是素?cái)?shù),當(dāng)且僅當(dāng)

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

????????這個(gè)同余多項(xiàng)式對(duì)所有與n互素的整數(shù)a均成立。這個(gè)定理是費(fèi)馬小定理的一般化,并且可以簡(jiǎn)單的使用二項(xiàng)式定理跟二項(xiàng)式系數(shù)的這個(gè)特征: Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn),對(duì)任何0<k<n,當(dāng)且僅當(dāng)n是素?cái)?shù)來(lái)證明出此定理。

????????為了減少計(jì)算復(fù)雜度,AKS改為使用以下的同余多項(xiàng)式:

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

????????這個(gè)同余式可以在多項(xiàng)式時(shí)間之內(nèi)檢查完畢。這里我們要注意所有的素?cái)?shù)必定滿足此條件式。然而,有一些合數(shù)也會(huì)滿足這個(gè)條件式。有關(guān)AKS正確性的證明包含了推導(dǎo)出存在一個(gè)夠小的r以及一個(gè)夠小的整數(shù)集合A,令如果此同余式對(duì)所有A里面的整數(shù)都滿足,則n必定為素?cái)?shù)。

iii.Miller-Rabin素?cái)?shù)測(cè)試算法

????????Miller-Rabin素性檢驗(yàn)是一種素?cái)?shù)判定法則,利用隨機(jī)化算法判斷一個(gè)數(shù)是合數(shù)還是可能是素?cái)?shù)??▋?nèi)基梅隆大學(xué)的計(jì)算機(jī)系教授Gary Lee Miller首先提出了基于廣義黎曼猜想的確定性算法,由于廣義黎曼猜想并沒(méi)有被證明,其后由以色列耶路撒冷希伯來(lái)大學(xué)的Michael O.Rabin教授作出修改,提出了不依賴于該假設(shè)的隨機(jī)化算法。

????????米勒-拉賓檢測(cè)依賴以下定理:

????????如果p是素?cái)?shù),x是小于p的正整數(shù),且x^2 = 1 mod p,則x要么為1,要么為p-1。簡(jiǎn)單證明:如果x^2 = 1 mod p,則p整除x^2 – 1,即整除(x+1)(x-1),由于p是素?cái)?shù),所以p要么整除x+1,要么整除x-1,前者則x為p-1,后者則x為1。

????????素性檢測(cè)首先利用了因數(shù)分解式,將冪次n-1降低為以2為階的各次冪,再利用中國(guó)剩余定理,推出強(qiáng)偽素?cái)?shù)的滿足條件,在算法優(yōu)化中,采用模平方算法降低復(fù)雜度,這也是該算法的優(yōu)勢(shì)之一,大大提高了效率。

????????具體操作如下所示:

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

????????在k次檢測(cè)通過(guò)的情況下,n為合數(shù)的概率小于1/4k。相比之下,這樣的出錯(cuò)概率遙遙低于費(fèi)馬素性檢測(cè)。而且需要注意的是,這是個(gè)很保守的估計(jì),實(shí)際使用的效果要好得多。

2. Miller-Rabin大素?cái)?shù)判斷算法的實(shí)現(xiàn)

????????有了前面的理論基礎(chǔ),現(xiàn)在我就可以開(kāi)始進(jìn)行編程來(lái)實(shí)現(xiàn)Miller-Rabin大素?cái)?shù)判斷算法了。

i.首先編寫(xiě)一個(gè)python程序來(lái)驗(yàn)證Miller-Rabin大素?cái)?shù)判斷算法

????????我用python編程實(shí)現(xiàn)了Miller-Rabin大素?cái)?shù)判斷算法,由于此時(shí)我無(wú)法找到很大的素?cái)?shù),所以只對(duì)一些較小的、常見(jiàn)的素?cái)?shù)進(jìn)行判斷,這樣有利于后續(xù)判斷大數(shù)是否為素?cái)?shù)。程序在pycharm中如下所示(完整代碼見(jiàn)附錄1):

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

?????????下面是我每次隨機(jī)輸入一個(gè)數(shù),程序?qū)υ摂?shù)是否為素?cái)?shù)的判斷(prime為素?cái)?shù),composite為合數(shù)):

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

????????可以看到,該Miller-Rabin素?cái)?shù)判斷程序?qū)ι鲜鲚斎氲臄?shù)字進(jìn)行判斷的結(jié)果都是正確的。那么這個(gè)程序是否能夠?qū)艽蟮乃財(cái)?shù)進(jìn)行判斷呢?目前還沒(méi)有確定的答案,因?yàn)槲椰F(xiàn)在不能找到一個(gè)很大的素?cái)?shù)作為程序的輸入來(lái)進(jìn)行判斷,比如找到一個(gè)512bits的大數(shù)。那么,下一步便是編寫(xiě)生成大素?cái)?shù)的程序,我們?cè)谠摮绦蜻\(yùn)行后得到一個(gè)很大的素?cái)?shù)后,再把該素?cái)?shù)放入上面的Miller-Rabin素?cái)?shù)判斷程序中,觀察判斷的結(jié)果,從而能夠確認(rèn)Miller-Rabin素?cái)?shù)判斷程序?qū)艽蟮臄?shù)進(jìn)行素性檢測(cè)是否有效。

ii.使用GMP庫(kù)生成隨機(jī)大素?cái)?shù)

????????通過(guò)調(diào)研發(fā)現(xiàn),可以直接使用GMP庫(kù)來(lái)生成一個(gè)512bits的大素?cái)?shù),在DevC++中的程序如下(p為512bits的大素?cái)?shù),完整代碼見(jiàn)附錄2):

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

??????????運(yùn)行該程序后,我得到了一個(gè)512bits的大素?cái)?shù),其十進(jìn)制表示如下:

13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006083527

????????然后我將該大素?cái)?shù)作為輸入,運(yùn)行上面的Miller-Rabin素?cái)?shù)判斷程序,結(jié)果如下:

Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)

????????可以看到,該程序?qū)⑤斎肱卸樗財(cái)?shù),這與事實(shí)是相符的,說(shuō)明上面的Miller-Rabin素?cái)?shù)判斷程序在一定程度上的準(zhǔn)確率是比較可靠的。

????????當(dāng)然,這里使用的是GMP庫(kù)來(lái)生成512bits的大素?cái)?shù),其實(shí)用python也能得到大素?cái)?shù),附錄3中給出了使用python生成512bits大素?cái)?shù)的核心函數(shù)。

四、研究結(jié)果及其分析

????????從上面的研究?jī)?nèi)容可以看到,將Miller-Rabin素性檢測(cè)算法用于大素?cái)?shù)的判斷是能夠得到較好的結(jié)果的。Miller-Rabin素性檢測(cè)其實(shí)就是Fermat算法加入二次探測(cè)定理的一種實(shí)現(xiàn),它的理論基礎(chǔ)是由Fermat定理引申而來(lái),因此它具備了Fermat檢測(cè)算法的優(yōu)勢(shì),同時(shí)進(jìn)一步降低了判斷的錯(cuò)誤率。在運(yùn)行python程序?qū)^小的數(shù)進(jìn)行素性檢測(cè)時(shí),得到結(jié)果的速度很快,這也是Miller-Rabin素性檢測(cè)算法的一個(gè)優(yōu)點(diǎn)。在使用GMP庫(kù)獲取512bits的大素?cái)?shù)時(shí),耗費(fèi)的時(shí)間會(huì)長(zhǎng)一點(diǎn),但當(dāng)我把512bits的大數(shù)作為輸入運(yùn)行Miller-Rabin大素?cái)?shù)判斷程序時(shí),得到結(jié)果的速度依然很快,且結(jié)果是正確的。因此,本次編程實(shí)現(xiàn)Miller-Rabin大數(shù)素性檢測(cè)取得了一定的成功。

????????當(dāng)然,本次研究還有需要改進(jìn)的地方,比如在獲取512bits的大素?cái)?shù)的方法上,除了使用GMP這個(gè)現(xiàn)有的庫(kù)來(lái)實(shí)現(xiàn),還可以自己編寫(xiě)程序,從更加底層的角度,來(lái)得到大素?cái)?shù)。對(duì)于Miller-Rabin大素?cái)?shù)判斷程序,因?yàn)槲也殚喌馁Y料有限,精力也有限,所以我認(rèn)為一定還可以在此程序基礎(chǔ)上進(jìn)行改進(jìn),使得判斷的準(zhǔn)確性更高,即錯(cuò)誤率更低。這些都是通過(guò)本次研究結(jié)果看到的不足,后續(xù)我會(huì)持續(xù)進(jìn)行研究和改進(jìn)。

五、結(jié)論

????????在本次研究中,我熟悉了三種常見(jiàn)的大數(shù)素性檢測(cè)的算法,同時(shí)理解了大數(shù)生成的原理,利用GMP庫(kù)生成512bits的大素?cái)?shù),使用python語(yǔ)言編寫(xiě)了Miller-Rabin大素?cái)?shù)判斷算法的程序,將大素?cái)?shù)作為輸入,運(yùn)行程序,得到了正確的判斷結(jié)果。

????????研究結(jié)果說(shuō)明,Miller-Rabin算法用于大數(shù)素性檢測(cè)的優(yōu)勢(shì)很明顯:速度快,錯(cuò)誤率低;同時(shí),獲取大素?cái)?shù)的方法不只一種,還可以去探索新的方法,我編寫(xiě)的python程序也有可以改進(jìn)的地方,通過(guò)后續(xù)的研究,我相信能夠把程序的素?cái)?shù)判斷錯(cuò)誤率降得更低。

????????通過(guò)本次研究,我對(duì)素?cái)?shù)在密碼學(xué)中發(fā)揮的重要性有了更深刻的理解,對(duì)

????????Miller-Rabin大素?cái)?shù)判斷算法的原理有了較為熟悉的掌握,在編寫(xiě)程序?qū)崿F(xiàn)該算法的過(guò)程中,我強(qiáng)化了對(duì)其的理解,也提高了自己的動(dòng)手能力,收獲頗豐。

六、參考文獻(xiàn)

[1]? 謝建全.一種實(shí)用的大素?cái)?shù)快速生成方法[J].信息安全與通信保密.2006,(9).56-58.

[2]? 耿海飛,蘇錦海.大素?cái)?shù)的快速生成研究與實(shí)現(xiàn)[J].電腦與信息技術(shù).2005,(2).9-11,32.

[3]? 韋萍萍,戎士奎.判定素?cái)?shù)的新方法及程序[J].貴州教育學(xué)院學(xué)報(bào)(自然科學(xué)).2005,(2).1-3.

[4]? 朱文余.AKS算法及關(guān)于它的一種改進(jìn)算法的實(shí)現(xiàn)分析[J].四川大學(xué)學(xué)報(bào)(自然科學(xué)版).2005,(3).459-466.

[5] 瞿白.大數(shù)的生成和素性檢驗(yàn)[J].電腦知識(shí)與技術(shù).2010,(6).7353-7356.

七、附錄

1.驗(yàn)證Miller-Rabin大素?cái)?shù)判斷算法的python程序

import random

def isprime(n):

??? k,p=0,n-1

??? while (p&1)==0:

??????? p=p>>1

??????? k+=1

??? for j in range(6):

??????? a=random.randint(1,n-1)

??????? b=pow(a,p,n)

??????? flag=0

??????? if b==1:

??????????? continue文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-490970.html

??????? for i in range(k):

??????????? if (b+1)%n==0:

??????????????? flag=1

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

??????????? else:

???????? ???????b=(b*b)%n

??????? if flag==1:

??????????? continue

??????? else:

??????????? return False

??? return True

n=int(input())

if isprime(n):

??? print(n,'is prime')

else:

??? print(n,'is composite')

if __name__ == '__main__':

isprime(n)

2.使用GMP庫(kù)生成隨機(jī)大素?cái)?shù)的C語(yǔ)言程序(p為512bits的大素?cái)?shù))

#include <stdio.h>

#include <gmp.h>

#include<time.h>

int main()

{

??? clock_t time = clock();

??? gmp_randstate_t grt;

??? gmp_randinit_default(grt);

??? gmp_randseed_ui(grt, time);

??? mpz_t p;

??? mpz_init(p);

??? mpz_urandomb(p, grt, 512);

??? mpz_nextprime(p, p);

??? gmp_printf("p = %Zd\n\n", p);

??? return 0;

}

3.使用python生成512bits大素?cái)?shù)的核心函數(shù)

i.生成偽素?cái)?shù)

def proBin(w):? # w表示希望產(chǎn)生位數(shù)

??? list = []

??? list.append(1)? #最高位定為1

??? for i in range(w - 2):

??????? c = randint(0, 1)

??????? list.append(c)

??? list.append(1)

??? ls2 = [str(j) for j in list]

??? ls3 = ''.join(ls2)

??? b = int(ls3[0])

??? for i2 in range(len(ls3) - 1):

??????? b = b << 1

??????? b = b + int(ls3[i2 + 1])

??? d = long(b)

return d

ii.產(chǎn)生512位素?cái)?shù)

def pro512():?????????? # 產(chǎn)生512位素?cái)?shù)

??? while 1:

??????? d = proBin(512)

??????? for i in range(50):? # 偽素?cái)?shù)附近50個(gè)奇數(shù)都沒(méi)有真素?cái)?shù)的話,重新再產(chǎn)生一個(gè)偽素?cái)?shù)

??????????? u = testMillerRabin(d+2*(i), 5)

??????????? if u:

??????????????? b = d + 2*(i)

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

??????????? else:

??????????????? continue

??????? if u:

??????????? return b

??????? else:

??????????? continue

到了這里,關(guān)于Miller-Rabin大素?cái)?shù)判斷算法的原理及其實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 探索字符串匹配算法:Rabin-Karp算法

    字符串匹配算法是計(jì)算機(jī)科學(xué)中的重要領(lǐng)域,用于在一個(gè)文本字符串中尋找特定的模式。本文將深入介紹Rabin-Karp算法,這是一種常用的字符串匹配算法,適用于在文本中高效地查找特定模式的出現(xiàn)。 Rabin-Karp算法是基于哈希的字符串匹配算法。它的主要思想是使用哈希函數(shù)來(lái)

    2024年02月11日
    瀏覽(32)
  • Python快速判斷素?cái)?shù)方法

    不廢話,上代碼: 傳統(tǒng)的判斷素?cái)?shù)函數(shù)如下: 運(yùn)行兩個(gè)函數(shù)判斷素?cái)?shù),得到其運(yùn)行時(shí)間分別如下: number IsPrime IsPrime1 3 9.5367431640625e-07 8.58306884765625e-06 4 1.1920928955078125e-06 3.0994415283203125e-06 5 2.384185791015625e-06 1.430511474609375e-06 7 1.6689300537109375e-06 1.1920928955078125e-06 100 7.1525573730468

    2023年04月09日
    瀏覽(19)
  • 判斷素?cái)?shù)的常見(jiàn)方法

    判斷素?cái)?shù)的常見(jiàn)方法

    素?cái)?shù)(Prime number),又稱質(zhì)數(shù),是指在大于1的自然數(shù)中,除了1和它自身外,不能被任何其他自然數(shù)整除的數(shù)叫做質(zhì)數(shù);否則稱為合數(shù)。 值得注意的是,0 與 1 既不是素?cái)?shù),也不是合數(shù)。 素性測(cè)試(Primality test),或素?cái)?shù)判定,是檢驗(yàn)一個(gè)給定的整數(shù)是否為素?cái)?shù)的測(cè)試。 判斷 n n

    2024年02月08日
    瀏覽(18)
  • C語(yǔ)言 - 判斷素?cái)?shù)

    C語(yǔ)言 - 判斷素?cái)?shù)

    素?cái)?shù)(Prime number,又稱質(zhì)數(shù)),指在大于1的自然數(shù)中,除了1和該數(shù)自身外,無(wú)法被其他自然數(shù)整除的數(shù) 1.如果數(shù)字 i 能被 2 ~ i-1 整除,說(shuō)明 i 就是素?cái)?shù) 代碼(V1): 2.上述代碼可進(jìn)行優(yōu)化,我們?cè)嚦姆秶? ~ i-1,但實(shí)際上從 i/2 ~ i-1之間的數(shù)是多余的,因?yàn)槿绻粋€(gè)數(shù)不能

    2024年02月11日
    瀏覽(22)
  • 【C語(yǔ)言】判斷一個(gè)數(shù)是否為素?cái)?shù)(素?cái)?shù)求解的N種境界)

    【C語(yǔ)言】判斷一個(gè)數(shù)是否為素?cái)?shù)(素?cái)?shù)求解的N種境界)

    這是一篇關(guān)于素?cái)?shù)的介紹,以及介紹判斷是否為素?cái)?shù)的一篇博客,我會(huì)將方法一一列舉出來(lái)方便大家理解和觀看。 ?? 我們?cè)贑語(yǔ)言的學(xué)習(xí)中會(huì)遇到各種各樣的數(shù)學(xué)問(wèn)題,每次遇到這些數(shù)學(xué)問(wèn)題時(shí),我們一定要學(xué)習(xí)如何用代碼的方法表示出來(lái),加深理解,并且強(qiáng)化自己的能力,

    2024年02月06日
    瀏覽(37)
  • Java輸入任意正整數(shù),判斷其以內(nèi)所有的素?cái)?shù)(1000以內(nèi)的所有素?cái)?shù))

    Java輸入任意正整數(shù),判斷其以內(nèi)所有的素?cái)?shù)(1000以內(nèi)的所有素?cái)?shù))

    * 思路1: * 從約數(shù)的角度出發(fā) * 5的約數(shù)為1,5,和為6 * 13的約數(shù)為1,13,和為14 * 17的約數(shù)為1,17,和為18 * 18的約數(shù)為1,2,3,6,9,18,,和為39 * 所以如果約數(shù)的和==i+1;則為素?cái)?shù),否則為偶數(shù) * * 思路2: * 判斷約數(shù)個(gè)數(shù)是否大約2 * 2的約數(shù)為1,2?? 約數(shù)個(gè)數(shù)為2 * 11的約數(shù)為1,11?? 約數(shù)個(gè)

    2023年04月08日
    瀏覽(25)
  • C 練習(xí)實(shí)例33 - 質(zhì)數(shù)(素?cái)?shù))判斷

    題目: 判斷一個(gè)數(shù)字是否為質(zhì)數(shù)。 程序分析: 質(zhì)數(shù)(prime number)又稱素?cái)?shù),有無(wú)限個(gè)。一個(gè)大于1的自然數(shù),除了1和它本身外,不能被其他自然數(shù)整除。 這題做過(guò)很多遍了,懂得都懂。 代碼:

    2024年01月21日
    瀏覽(18)
  • 判斷一個(gè)數(shù)是否是素?cái)?shù)(Java版)

    目錄 素?cái)?shù)的定義 求解素?cái)?shù) 素?cái)?shù)判定法1: 遍歷從2到n-1的所有數(shù)字,判斷是否有可以被n整除的數(shù),如果沒(méi)有,則為素?cái)?shù)。 優(yōu)化法2: 判定的范圍改為[2 -,n/2]。當(dāng) in/2 時(shí),則判定為素?cái)?shù)。 優(yōu)化法3: 在Java中判定素?cái)?shù)的范圍也可以到sqrt(n),(對(duì)n開(kāi)平方)。對(duì)應(yīng)的函數(shù)為:Math.sqrt(n

    2024年02月16日
    瀏覽(15)
  • 【C語(yǔ)言】判斷一個(gè)數(shù)是否為素?cái)?shù)

    目錄 判斷一個(gè)數(shù)是否為素?cái)?shù) 方法1? 方法2? ? 2.1 2.2 進(jìn)階:輸出區(qū)間長(zhǎng)度內(nèi)的素?cái)?shù) “ 素?cái)?shù)和質(zhì)數(shù)沒(méi)有區(qū)別 ,素?cái)?shù)又叫質(zhì)數(shù),質(zhì)數(shù)是指在大于1的自然數(shù)中,除了1和它本身以外,不能被其他自然數(shù)整除的數(shù)。比1大但不是素?cái)?shù)的數(shù)稱為合數(shù),1和0既非素?cái)?shù)也非合數(shù)?!?所謂素?cái)?shù)

    2024年02月04日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包