热门问题
时间线
聊天
视角

费马素性检验

来自维基百科,自由的百科全书

Remove ads

费马素性检验是一种素数判定法则,利用随机化算法判断一个数是合数还是可能是素数。

概念

根据费马小定理:如果 是素数,,那么

如果我们想知道 是否是素数,我们在中间选取 ,看看上面等式是否成立。如果对于数值 等式不成立,那么 是合数。如果有很多的a能够使等式成立,那么我们可以说 可能是素数,或者伪素数

在我们检验过程中,有可能我们选取的 都能让等式成立,然而 却是合数。这时等式

被称为Fermat liar。如果我们选取满足下面等式的a

那么 也就是对于 的合数判定的Fermat witness

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
最小的 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
Remove ads

算法以及运行时间

整个算法可以写成是下面两大部:

输入 需要检验的数;:参数之一来决定检验需要进行的次数。
输出:当 是合数时输出合数,否则输出可能是素数
重复 次:
范围内随机选取
如果 那么返回合数
返回可能是素数

若使用模指数运算的快速算法,这个算法的运行时间是 ,这里 是一个随机的 需要检验的次数, 是我们想要检验的数。

Remove ads

缺点

众所周知,对于卡米歇尔数 全部 都是费马骗子数(Fermat liars)。尽管卡米歇尔数很是稀有,但是却足够令费马素性检验无法像如米勒-拉宾Solovay-Strassen素性检验般,成为被经常实际应用的素性检验。

一般的,如果 不是卡米歇尔数,那么至少一半的

是费马证人数(Fermat witnesses)。在这里,令 为费马证人数、 为费马骗子数。那么

所有的都是费马证人数。

Remove ads

应用

加密程序PGP在算法当中用到了这个素性检验方法。

参见

参考

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads