费马素性检验是一种素数判定法则,利用随机化算法判断一个数是合数还是素数。
根据费马小定理:如果是素数,是否是素数,我们在中间选取,看看上面等式是否成立。如果对于数值等式不成立,那么是合数。如果有很多的能够使等式成立,那么我们可以说可能是素数,或者伪素数。
在我们检验过程中,有可能我们选取的都能让等式成立,然而n却是合数。这时等式
被称为。如果我们选取满足下面等式的
那么也就是对于的合数判定的。
整个算法可以写成是下面两大部:
若使用模指数运算的快速算法,这个算法的运行时间是O(×log3),这里是一个随机的需要检验的次数,是我们想要检验的数。
众所周知,对于卡米歇尔数,全部令gcd(,)=1的都是费马骗子数(Fermat liars)。尽管卡米歇尔数很是稀有,但是却足够令费马素性检验无法像如米勒-拉宾和Solovay-Strassen的素性检验般,成为被经常实际应用的素性检验。
一般的,如果不是卡米歇尔数,那么至少一半的
是费马证人数(Fermat witnesses)。在这里,令为费马证人数、1, 2, ..., 为费马骗子数。那么
所有的×i for = 1, 2, ..., 都是费马证人数。
加密程序PGP在算法当中用到了这个素性检验方法。