首頁>Club>
如何快速的判斷一個數是素數?
2
回覆列表
  • 1 # 薛定諤的小貓貓

    根據數的不同範圍和要求,我總結主要有三種常用的方法判斷一個數是否是素數

    一. 一般方法

    直接判斷在sqrt(n)範圍內有沒有整數能整除n,如果有則不是素數,否則就是素數。

    但這種方法比較暴力,如果n過大是不行的,而且一個一個去計算太慢了,如果我要找出10000000以內的所有素數,那計算量是相當大,效率不高。

    二. 基於線性篩法

    如果要找出10000000以內的所有素數,那麼就要使用線性篩法了。基本原理是:先把所有整數列出來,然後把2的倍數全部剔除,然後是三的,以此類推,遍歷所有素數,把倍數全部劃去。劃去的是合數,剩下的就是素數了。

    那麼,如果n特別大的時候呢,比如n=10^12,又怎麼判斷呢? 這時候就需要Miller-Rabin素數測試方法了。

    三. Miller-Rabin素數測試

    它是基於二次探測定理進行判斷的,定理描述如下

    程式碼實現比較長,截圖在下面

    一般情況下第二種和第三種方法用得最多。

  • 2 # 手機使用者宣永和

    不知道現在世界上不用計算機,最先進判定質數的方法是什麼,我自以為有較先進的方法。比如已知1萬內所有質數,分解58965539是質還是合。要多長時間。

  • 中秋節和大豐收的關聯?
  • 如果長痘了,你用痘痘貼嗎?