为什么用米勒-拉宾代替费马素数检验?


10

Miller-Rabin证明中,如果一个数字通过了Fermat素数检验,则它还必须通过具有相同底数(证明中的变量)的Miller-Rabin检验。而且计算复杂度是相同的。a

以下是来自Fermat素数测试的信息

尽管Carmichael数比素数少得多,但其中1足够多,因此上述形式中经常不使用Fermat的素数检验。取而代之的是,更常使用Fermat测试的其他更强大的扩展,例如Baillie-PSW,Miller-Rabin和Solovay-Strassen。

米勒-拉宾(Miller-Rabin)有什么好处,为什么据说它比费马素数检验更强大?

Answers:


7

在给定数字,Rabin-Miller算法还测试Z n是否具有Unity的非平凡根。ñžñ

卡米歇尔数通过费马测试(每基础),但对于每卡迈克尔数Ñ,存在许多数字一个,使得测试团结根上失败一个(即,该序列2 2 r a最终显示出一个非平凡的统一根。一个ñ一个一个一个2一个2[R一个

因此,我们有以下内容:

对于费马测试中,如果合数不卡迈克尔,那么该测试将检测compositeness是至少概率1 / 2。但是,该测试将使所有Carmichael号码失败。ñ1个/2

对于拉宾-米勒测试,每次复合号码将概率至少可以检测。这意味着正确性概率与输入无关(没有“硬”输入)。这就是使该算法更强大的原因。1个/2


您是说卡迈克尔(Michaeln)能够在费马(Fermat)的测试中成功,但在拉宾·米勒(Rabin-Miller)的测试中使用相同的底数会失败a吗?
ZijingWu 2014年

Carmichael编号的每个都通过了Fermat的检验,但是对于某些a,则将不通过Rabin-Miller检验(特别是Unity检验的根)。一个一个
Shaull 2014年

但是卡迈克尔将不能通过费马测试每,对不对?例如,第一卡迈克尔数561 = 3 * 11 * 17将不会通过费马测试一个 = 3或11或17一个一个
ZijingWu

当我们说“通过”时,是指它们不会被检测为合成数。因此,Carmichael数字将通过每的测试。我认为我们是同一回事。在本例中,561将通过每个数字a的费马检验。一个一个
Shaull

1
“更复杂”的测试的要点在于,所说谎的碱基分数(例如,数字可能是质数,如果不是),则保证的限度小于1。即,在米勒-拉宾中可以证明最多1/4谎言(IIRC,界限很悲观)。
vonbrand 2014年

0

我相信您的陈述与所发生的相反。通过给定基数的Miller-Rabin测试意味着它将通过相同基数的Fermat测试。相比之下,对于给定的基数,有许多复合材料将通过Fermat测试,但对于相同的基数,将无法通过Miller-Rabin测试。

参见,例如Wikipedia Miller-Rabin页面上的Pomerance / Selfridge / Wagstaff的论文:

https://math.dartmouth.edu/~carlp/PDF/paper25.pdf

我们在第2页上看到了一个图,该图显示了Euler伪素数是Fermat伪素数的子集,而强伪素数是它们的子集。因此,Solovay-Strassen检验比Fermat检验更具区分性,而Miller-Rabin检验比任何一个检验都更具辨识性。它们都避免了Carmichael数的严重问题。它们具有基本相同的性能,因此我们更喜欢使用Miller-Rabin测试。


0

很明显,米勒-拉宾比费马更好。

一个p-1个

一个p-1个p-1个=s·2ķ一个s一个p-1个

同样,如果结果不为1(模p),则p为合成。但是,如果结果 1模p,则我们通过对不是+1或-1的中间结果求平方来检查是否得到1,在这种情况下,x也被证明是合成的。

因此,我们所做的工作量完全相同,但是有更多方法证明x是合成的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.