1. 程式人生 > >Miller_Rabin(米勒拉賓)素數測試

Miller_Rabin(米勒拉賓)素數測試

dir amp 可能 image 法則 卡內基 strong 概率 mod

2018-03-12 17:22:48

米勒-拉賓素性檢驗是一種素數判定法則,利用隨機化算法判斷一個數是合數還是可能是素數。卡內基梅隆大學的計算機系教授Gary Lee Miller首先提出了基於廣義黎曼猜想的確定性算法,由於廣義黎曼猜想並沒有被證明,其後由以色列耶路撒冷希伯來大學的Michael O. Rabin教授作出修改,提出了不依賴於該假設的隨機化算法

問題描述:對於大整數N,判斷其是否為素數。

問題求解:

若N為偶數,直接返回false,若N是奇數,則進行以下幾步進行判斷:

  1. 將N - 1分解為 2 ^ s * d 的形式,得到s 和 d的值;
  2. 從[1, N - 1]中隨機挑選a,作為基底;
  3. 對每個 r in [0, s - 1],if ( a ^ d mod N != 1 && a ^{d * (2 ^ r)} mod N != -1) return N 是合數; else N有3/4的概率是素數,可以繼續另選a加以判斷。

舉個例子:

技術分享圖片

證明:

技術分享圖片

Miller_Rabin(米勒拉賓)素數測試