国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python高效的素數(shù)判斷算法

瀏覽:9日期:2022-06-23 11:39:06
高效素數(shù)判斷算法算法概述

此算法將其他博主對基本素數(shù)算法的一些改進進行了整合,其中主要整合了如下三條規(guī)則:

1.大于3的素數(shù)一定在6的倍數(shù)前一個或后一個(如素數(shù)37在36的后面)

2.要判斷n是否為素數(shù),只需要讓n從2開始,依次除到根號n即可

3.在進行“讓n從2開始,依次除到根號n”過程中,若n除以2的余數(shù)不為0,可以直接跳過[2, sqrt(n)]里面的所有偶數(shù)

博主語文素養(yǎng)不高,表達不是很準確,在后面會對這三條規(guī)則進行解釋。

規(guī)則詳解

1.大于3的素數(shù)一定在6的倍數(shù)前一個或后一個(如素數(shù)37在36的后面)

數(shù)學證明:

任意一個整數(shù)n可以表示為n = 6a + b ( 0 <= b <= 5, a >= 0 ),接下來依次講當n等于0到5的情況,以對此結論進行證明:

當n = 6a + 0 = 6a時,n有一個不為1及其本身的因數(shù)(素數(shù)判斷條件)6,此類數(shù)不為素數(shù)

當n = 6a + 2 = 2( 3a + 1 )時,n有一個不為1及其本身的因數(shù)(素數(shù)判斷條件)2,此類數(shù)不為素數(shù)

當n = 6a + 3 = 3( 2a + 1 )時,同上,有一因數(shù)3,此類數(shù)也不為素數(shù)

當n = 6a + 4 = 2( 3a + 2 )時,有一因數(shù)2, 此類數(shù)也不為素數(shù)

而當n = 6a + 1 或 n = 6a + 5時,不能絕對確定n是否為素數(shù),需要考慮a的取值,顯然此時的數(shù)值n就是分布在6的倍數(shù)前一個或后一個

總結:大于3的素數(shù)一定分布在6的倍數(shù)前后

此規(guī)則可以直接對素數(shù)進行初步篩選,不符合此規(guī)則的數(shù)可直接判定為非素數(shù),直接減少了2/3的運算量,效率提高肉眼可見 注意小于等于3的素數(shù)(2, 3)需要另外判斷

2.要判斷n是否為素數(shù),只需要讓n從2開始,依次除到根號n即可

最基本的素數(shù)判斷方法是:讓n從2開始除,依次除到n - 1,如果每次除出來的結果余數(shù)皆不為0,那么此數(shù)n即為素數(shù)實際上并不需要從除以[2, n - 1]區(qū)間的所有整數(shù),只需除以[2, sqrt(n)]

3.在進行讓n除以[2, sqrt(n)]區(qū)間內(nèi)的所有整數(shù)操作時,如果2不是n的一個因數(shù),那么之后可以不判斷[2, sqrt(n)]區(qū)間的所有偶數(shù)

數(shù)學證明:當n/2除不盡時,n除以[2, sqrt(n)]區(qū)間內(nèi)的所有偶數(shù)都除不盡

python高效的素數(shù)判斷算法

因此如果n不能將2除盡,那么之后的偶數(shù)一樣除不盡,可以直接不除如果將2除盡了,n就不是素數(shù),直接排除如果沒有將2除盡,之后的計算量直接減半,肉眼可見的效率提升

算法時間復雜度復雜度

1.最基礎的算法:也就是讓n從2開始判斷,一直到n-1

若遇到的數(shù)是素數(shù)時,此時需要進行n-2次判斷當遇到的不是素數(shù)時,要進行a(2<a<n-2)次判斷也就是說時間復雜度為n

2.改進后的算法:

根據(jù)規(guī)則二,判斷素數(shù)只要從[2,sqrt(n)]即可,此時復雜度為sqrt(n)根據(jù)規(guī)則3,無論如何都可以不判斷2之后的偶數(shù)(當n大于2,當n除盡2時,n不為素數(shù),之后不需要判斷,如果n除不盡2時,之后的偶數(shù)不要判斷)假設n可以除盡2和不可以除盡2概率相等,那此時復雜度為sqrt(n)/4根據(jù)規(guī)則一,只有1/3的數(shù)要進行判斷,此時復雜度為sqrt(n)/12也就是說時間復雜度為sqrt(n)/12

在計算過程中做出的假設以及計算過程并不那么嚴謹,此結果僅供參考

Python代碼實現(xiàn)

def primeJudge(n): #先將數(shù)分為三類, 小于等于1,大于1小于5,和大于等于5 #非整數(shù)統(tǒng)統(tǒng)不是素數(shù) if not isinstance(n, int): return False #小于1等于的都不是素數(shù) if n <= 1: return False #大于1小于5 elif n == 2 or n == 3: return True #大于等于5 elif n >= 5: #先判斷是否在6的附近 if n % 6 == 5 or n % 6 == 1: #再判斷是否可以將2除盡 #可以的話不是素數(shù) if n % 2 == 0: return False else: #不可除盡2,直接跳過所有偶數(shù) for i in range(3, int(sqrt(n) + 1), 2): if n % i == 0: return False #經(jīng)過篩選即為素數(shù) return True #不在6的附近不是素數(shù) else: return False

以上就是python高效的素數(shù)判斷算法的詳細內(nèi)容,更多關于python素數(shù)算法的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产一区二区三区免费视频 | 一级片中文字幕 | 日韩在线1 | 久久成人免费大片 | 国产成人精品本亚洲 | 国产在线观看免费视频软件 | 97视频精品| 午夜三级毛片 | 欧美日韩在线播放一区二区三区 | 久久久久久网址 | 国产成人影院一区二区 | 国产成人精品福利网站人 | 国产亚洲精品影达达兔 | 性色a v 一区 | 日韩精品一区在线观看 | 免费在线观看黄色毛片 | 日韩亚洲欧美一区噜噜噜 | 成人免费黄色网址 | 亚洲成人手机在线观看 | 国产成人精品免费视频大全五级 | 毛片免费观看日本中文 | 无码孕妇孕交在线观看 | 精品国产成人系列 | 99久久亚洲国产高清观看 | 96精品视频在线播放免费观看 | 波多野结衣被强在线视频 | 亚洲自拍另类 | 国产日韩线路一线路二 | 亚洲第一网站在线观看 | 欧美很黄视频在线观看 | 国产99视频精品免费观看7 | 欧美成人三级伦在线观看 | 99国产小视频 | 91亚洲精品一区二区在线观看 | 日本又黄又爽又免费 | 国产dvd毛片在线视频 | 在线视频观看一区 | 国产精品自拍亚洲 | 日本理论片免费高清影视在线观看 | 亚洲国产高清视频 | 国产a级特黄的片子视频 |