基本介紹
概念,算法以及運行時間,缺點,套用,參見,
概念
根據費馬小定理:如果p是素數,
,那么
![](/img/8/162/6c29add5fb6ca8fc426bdb100b49.jpg)
![](/img/c/331/8cea8199cabdb5e08257911aef96.jpg)
在我們檢驗過程中,有可能我們選取的a都能讓等式成立,然而n卻是合數。這時等式
![](/img/9/2c6/313193c3aa388f56e882f7d4ca50.jpg)
![](/img/9/c4d/4eb9e715ff392fbbe10eb76fab86.jpg)
a | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
最小的n值 | 4 | 341 | 91 | 15 | 4 | 35 | 6 | 9 | 4 | 9 | 10 | 65 | 4 | 15 | 14 | 15 | 4 | 25 | 6 | 21 | 4 | 21 | 22 | 25 | 4 | 9 | 26 | 9 | 4 | 49 |
算法以及運行時間
整個算法可以寫成是下面兩大部:
- 輸入:n需要檢驗的數;k:參數之一來決定檢驗需要進行的次數。
- 輸出:當n是合數時,否則可能是素數:
- 重複k次:
在[1,n− 1]範圍內隨機選取a - 如果amodn≠ 1那么返回合數
返回可能是素數
若使用模指數運算的快速算法,這個算法的運行時間是O(k×logn),這裡k是一個隨機的a需要檢驗的次數,n是我們想要檢驗的數。
缺點
眾所周知,對於卡米歇爾數n,全部的a都會令gcd(a,n)=1,我們稱之為費馬騙子數(Fermat liars)。儘管卡米歇爾數很是稀有,但是卻足夠令費馬素性檢驗無法像如米勒-拉賓和Solovay-Strassen的素性檢驗般,成為被經常實際套用的素性檢驗。
一般的,如果n不是卡米歇爾數,那么至少一半的
![](/img/e/c8e/edb5ebf2778d7fb5f5425cbf4cf6.jpg)
![](/img/1/adc/8130084298927f177f27d3544e3a.jpg)