主题
Search

卢卡斯-莱默检验


卢卡斯-莱默检验是一种高效的确定性 素性检验,用于确定 梅森数 M_n 是否为素数。由于已知梅森数只有在素数下标时才可能是素数,因此可以将注意力限制为形如 M_p=2^p-1 的梅森数,其中 p 是一个 奇素数

考虑以下递推方程

 s_n=s_(n-1)^2-2 (mod M_p)
(1)

其中 s_0=4。例如,忽略同余,此迭代的前几个项为 4, 14, 194, 37634, 1416317954, ... (OEIS A003010)。

结果表明,M_p 是素数 当且仅当 s_(p-2)=0 (mod M_p),且值 s_(p-2) (mod M_p) 称为 p 的卢卡斯-莱默剩余。

例如,对于 p=7 获得的序列为 4, 14, 67, 42, 111, 0,因此 M_7=127 是素数。

对于素数 p,前几个卢卡斯-莱默剩余为 1, 0, 0, 0, 1736, 0, 0, 0, 6107895, 458738443, 0, 117093979072, ... (OEIS A095847)。

此检验也可以扩展到任意 整数。在普拉特 (1975) 的工作之前,卢卡斯-莱默检验一直被纯粹视为一种启发式方法,在很多时候都有效 (Knuth 1969)。普拉特 (1975) 表明,通过将莱默的素性启发式方法递归地应用于 n-1 的因子,可以使之成为一种非确定性程序,从而产生一种素性证明,即后来的 普拉特证书

卢卡斯-莱默检验的广义版本允许

 N+1=product_(j=1)^nq_j^(beta_j),
(2)

其中 q_j 是不同的 素因子beta_j 是它们各自的 。如果存在一个 卢卡斯序列 U_nu 使得

 GCD(U_((N+1)/q_j),N)=1
(3)

对于 j=1, ..., n 并且

 U_(N+1)=0 (mod N),
(4)

那么 N 是一个 素数。这简化为 梅森数 的传统卢卡斯-莱默检验。


另请参阅

卢卡斯序列, 梅森数, 梅森素数, 普拉特证书, 拉宾-米勒强伪素数检验

使用 Wolfram|Alpha 探索

参考文献

Knuth, D. E. §4.5.4 in 计算机程序设计艺术,第 2 卷:半数值算法。 Reading, MA: Addison-Wesley, 1969。Pratt, V. "Every Prime Has a Succinct Certificate." SIAM J. Comput. 4, 214-220, 1975。Ribenboim, P. "Primality Tests Based on Lucas Sequences." §2.V in 大素数之小书,第 2 版。 New York: Springer-Verlag, p. 63, 2004。Sloane, N. J. A. 序列 A003010/M3494 和 A095847 在“整数序列在线百科全书”中。

在 Wolfram|Alpha 中被引用

卢卡斯-莱默检验

请引用为

Weisstein, Eric W. “卢卡斯-莱默检验”。来自 MathWorld--Wolfram Web 资源。 https://mathworld.net.cn/Lucas-LehmerTest.html

主题分类