《PRIMES is in P》论文解析

  • 摘要

       本文提供了一个无条件确定性多项式时间算法,用于确定输入数字是素数还是合数。

  • 简介

素数在数学中一般,特别是在数论中具有基本重要性。因此,研究素数的不同性质具有极大的意义。特别感兴趣的是那些能够有效确定一个数是否为素数的性质。这种有效的测试在实践中也很有用:许多密码协议需要大素数。

设 PRIMES 表示所有素数的集合。素数的定义已经给出了判断一个数 n 是否在 PRIMES 中的方法:尝试用小于等于 √n 的每个数 m 来除以 n —— 如果任何 m 能整除 n,则 n 是合数,否则它是素数。这种测试自古希腊时期即已知晓 —— 它是筛法(约公元前240年)的一个特例,可以生成小于 n 的所有素数。然而,这个测试是低效的:确定 n 是否为素数需要 Ω(√n) 步骤。一个有效的测试应该只需要多项式(与输入的大小 = log n 成正比)数量的步骤。一个几乎给出有效测试的性质是费马小定理:对于任何素数 p,以及任何不能被 p 整除的数 a,ap−1 ≡ 1 (mod p)。给定一个 a 和 n,可以通过重复平方计算 a 的 (n−1) 次幂来高效检查 an−1 ≡ 1 (mod n)。然而,这不是一个正确的测试,因为许多合数 n 也对一些 a 满足这个条件(所有 a 对于卡迈克尔数也是如此)。尽管如此,费马小定理成为许多高效素数测试的基础。

自20世纪60年代开始复杂性理论——当时复杂性的概念被正式化并定义了各种复杂性类别——

这个问题(称为素性测试问题)已经受到了深入的研究。很容易看出这个问题属于 co-NP 类:如果 n 不是素数,那么它有一个易于验证的短证书,即 n 的一个非平凡因子。1974年,Pratt观察到这个问题也属于 NP 类[Pra](从而将其置于 NP ∩ co-NP 中)。

1975年,Miller [Mil] 使用基于费马小定理的一个性质,假设延伸黎曼猜想(ERH),得到了一个确定性多项式时间算法,用于素性测试。不久之后,Rabin [Rab] 修改了他的测试,得到了一个无条件但随机化的多项式时间算法。独立地,Solovay 和 Strassen [SS] 在1974年得到了一个不同的随机化多项式时间算法,利用了一个性质:对于一个素数 n,对于每一个 a( 是雅可比符号),都有 a^(n) ≡ a^((n-1)/2) (mod n)。他们的算法在 ERH 假设下也可以变为确定性的。从那时起,基于许多不同性质提出了许多随机化多项式时间算法用于素性测试。

1983年,Adleman、Pomerance 和 Rumely 利用高互反律提出了一个在 (log n)^O(log log log n) 时间内运行的确定性算法,实现了素性测试的重大突破(以前的确定性算法都需要指数时间)。他们的算法在某种意义上是对 Miller 思想的一种推广。1986年,Goldwasser 和 Kilian [GK] 提出了一个基于椭圆曲线的随机化算法,预期在几乎所有输入上都能以多项式时间运行(在一个广泛相信的假设下,所有输入上都能运行),为素性提供了一个易于验证的短证书(直到那时,所有随机化算法只为合成提供证书)。基于他们的想法,Atkin [Atk] 开发了一个类似的算法。Adleman 和 Huang [AH] 修改了 Goldwasser-Kilian 算法,得到了一个在所有输入上预期多项式时间运行的随机化算法。这一系列研究的最终目标当然是获得一个无条件的确定性多项式时间算法用于素性测试。尽管迄今取得了令人印象深刻的进展,但这一目标仍然难以实现。

在本文中,我们实现了这一目标。我们提供了一个确定性的、O∼(log^(15/2) n) 时间复杂度的算法,用于测试一个数是否为素数。从启发上看,我们的算法表现更好:在一个广泛相信的有关 Sophie Germain 素数密度的猜想下(即质数 p 满足 2p + 1 也是质数),该算法只需要 O∼(log^6 n) 步骤。我们的算法基于对有限域上的多项式环的费马小定理的推广。值得注意的是,我们算法的正确性证明只需要简单的代数工具(除了对于具有大质因子 p - 1 的素数 p 密度的筛法结果的引用—即使这对于证明算法的一个较弱时间界 O∼(log^(21/2) n) 也不是必需的)。相比之下,早期算法产生素性证书的正确性证明[APR],[GK],[Atk]要复杂得多。

在第2节中,我们总结了我们算法背后的基本思想。在第3节中,我们确定所使用的符号表示法。在第4节中,我们说明了算法并展示了其正确性证明。在第5节中,我们得出了算法运行时间的界限。第6节讨论了改进算法时间复杂度的一些方法。

  • 背后思想idea

该算法基于以下对于素数的身份验证,这是费马小定理的一个推广。这个身份验证是一种随机多项式时间算法的基础 [AB]:

引理 2.1. 设 a ∈ Z,n ∈ N,n ≥ 2,且 (a, n) = 1。则当且仅当 n 是素数时,

(X + a)^n ≡ X^n + a (mod n)。

证明。对于 0 < i < n,((X + a)^n - (X^n + a)) 中 xi 的系数是 a^n-i。

假设 n 是素数。那么 a^n ≡ a (mod n),因此所有系数为零。

假设 n 是合数。考虑 n 的一个因子为素数 q,且 q^k||n。那么 q^k 不整除 a^q,并且与 a^n-q 互质,因此 X^q 的系数不为零(mod n)。因此 ((X + a)^n - (X^n + a)) 在 Z_n 上不恒等于零。

上述身份验证提出了一个简单的素数测试方法:给定输入 n,选择一个 a 并测试是否满足同余式 (1)。然而,这需要 Ω(n) 的时间,因为在最坏情况下需要评估左侧的 n 个系数。减少系数数量的简单方法是在适当选择的小 r 的多项式 X^r - 1 模 n 求解同余式 (2):

(X + a)^n ≡ X^n + a (mod X^r - 1, n)。

根据引理 2.1,所有素数 n 都满足方程式 (2) 对于所有的 a 和 r。现在问题在于一些合数 n 也可能对于一些 a 和 r 的值满足方程式(实际上确实如此)。然而,我们几乎可以恢复这种特征:我们展示了对于适当选择的 r,如果方程式 (2) 对于几个 a 的值成立,那么 n 必须是一个素数幂。a 和适当的 r 的数量都受 log n 的多项式限制,因此我们得到了一个确定性多项式时间算法用于测试素性。

  • 符号和预备知识

类 P 是由确定性多项式时间图灵机接受的集合的类别[Lee];有关类别 NP、co-NP 等的定义,请参阅[Lee]。

Z_n 表示模 n 的数字环,F_p 表示具有 p 个元素的有限域,其中 p 是素数。回想一下,如果 p 是素数,h(X) 是次数为 d 且在 F_p 中是不可约的多项式,那么 F_p[X]/(h(X)) 是阶数为 p^d 的有限域。我们将使用符号 f(X) = g(X) (mod h(X), n) 表示在环 Z_n[X]/(h(X)) 中的方程 f(X) = g(X)。

我们使用符号 O∼(t(n)) 表示 O(t(n) · poly(log t(n)),其中 t(n) 是 n 的任何函数。例如,O∼(log^k n) = O(log^k n · poly(log log n)) = O(log^(k+ε) n),其中 ε > 0。我们使用 log 表示以 2 为底的对数,使用 ln 表示自然对数。

N 和 Z 分别表示自然数和整数集合。给定 r ∈ N,a ∈ Z 且 (a, r) = 1,模 r 的 a 的阶是满足 ak ≡ 1 (mod r) 的最小数 k。它表示为 or(a)。对于 r ∈ N,φ(r) 是欧拉函数,给出小于 r 且与 r 互质的数的数量。很容易看出对于任何 a,(a, r) = 1,or(a) | φ(r)。我们需要关于前 m 个数的最小公倍数的以下简单事实(见,例如,[Nai] 的证明)。

引理 3.1. 让 LCM(m) 表示前 m 个数的最小公倍数。对于 m ≥ 7:
LCM(m) ≥ 2m。

  • 算法和正确性检验

输入:整数 n > 1。

  1. 如果(n = ab,其中 a ∈ N 且 b > 1),输出 COMPOSITE。

  2. 寻找最小的 r,使得 or(n) > log2 n。

  3. 如果对于某个 a ≤ r,有 1 < (a, n) < n,则输出 COMPOSITE。

  4. 如果 n ≤ r,则输出 PRIME。

  5. 对于 a 从 1 到 φ(r)log n,执行以下步骤:

    • 如果 ((X + a)^n ≡ X^n + a (mod X^r - 1, n)),则输出 COMPOSITE。
  6. 输出 PRIME。

素性测试算法

定理 4.1. 上述算法仅当 n 是素数时返回 PRIME。

在本节的其余部分,我们通过一系列引理来证明这个定理。以下引理是显而易见的:

引理 4.2. 如果 n 是素数,则该算法将返回 PRIME。
证明:如果 n 是素数,那么步骤 1 和 3 绝不会返回 COMPOSITE。根据引理 2.1,for 循环也不会返回 COMPOSITE。因此,算法将在步骤 4 或步骤 6 中将 n 识别为 PRIME。

上述引理的逆否需要更多的工作。如果算法在步骤 4 中返回 PRIME,那么 n 必须是素数,否则步骤 3 将找到 n 的一个非平凡因子。因此,唯一剩下的情况是当算法在步骤 6 中返回 PRIME。为了后续分析的目的,我们假设这是情况。

该算法有两个主要步骤(步骤 2 和 5):步骤 2 找到一个适当的 r,步骤 5 验证了方程式 (2) 对多个 a 的值。我们首先限制适当 r 的大小。

引理 4.3. 存在一个 r ≤ max{3, ⌈log5 n⌉},使得 or(n) > log2 n。
证明:当 n = 2 时,这显然成立;r = 3 满足所有条件。因此,假设 n > 2。然后 ⌈log5 n⌉ > 10,引理 3.1 适用。设 r1, r2, ... , rt 是所有数字,使得 ori(n) ≤ log2 n 或 ri 整除 n。这些数字中的每一个必须整除乘积 n · ∏(ni-1) < n^log4 n ≤ 2^log5 n。根据引理 3.1,前 ⌈log5 n⌉ 个数字的最小公倍数至少为 2^log5 n,因此必定存在一个数字 s ≤ ⌈log5 n⌉,使得 s ∈ {r1, r2, ... , rt}。若 (s, n) = 1,则 os(n) > log2 n,证毕。若 (s, n) > 1,则由于 s 不能整除 n 且 (s, n) ∈ {r1, r2, ... , rt},则 r = s^((s,n)) ∈ {r1, r2, ... , rt},因此 or(n) > log2 n。由于 or(n) > 1,必定存在 n 的一个素数因子 p 满足 or(p) > 1。由于 p > r,否则步骤 3 或步骤 4 将判定 n 的素性。由于 (n, r) = 1(否则步骤 3 或步骤 4 将正确识别 n),p, n ∈ Z*_r。在本节的剩余部分中,数字 p 和 r 将保持不变。另外,令 φ = ⌈φ(r)log n⌉。

引理 4.3 表明 r ≤ ⌈log5 n⌉,因此当 n ≤ 5, 690, 034 时,步骤 4 才相关。

步骤 5 中的算法验证了个方程。由于算法在这一步中没有输出 COMPOSITE,我们有:
(X + a)^n ≡ X^n + a (mod X^r - 1, n)
对于每个 a,0 ≤ a ≤ (当 a = 0 时,方程显然成立)。这意味着:
(X + a)^n ≡ X^n + a (mod X^r - 1, p)
对于 0 ≤ a ≤ 。根据引理 2.1,我们有:
(X + a)^p ≡ X^p + a (mod X^r - 1, p)
对于 0 ≤ a ≤ 。从方程式 3 和 4 可得:
(X + a)^(n/p) ≡ X^(n/p) + a (mod X^r - 1, p)
对于 0 ≤ a ≤ 。因此,在上述方程中,n 和 n/p 都表现得像素数 p。
我们给这种性质起了一个名字:

定义 4.4. 对于多项式 f(X) 和数字 m ∈ N,如果
[f(X)]^m ≡ f(X^m) (mod X^r - 1, p),
我们说 m 对于 f(X) 具有内省特性。

从方程式(5)和(4)可以清楚地看出,当 0 ≤ a ≤ 时,n/p 和 p 都对于 X + a 具有内省特性。
以下引理显示内省数在乘法下是封闭的:

引理 4.5. 如果 m 和 m' 对于 f(X) 具有内省特性,则 m · m' 也具有内省特性。
证明:因为 m 对于 f(X) 具有内省特性,我们有:
[f(X)]^(m·m') ≡ [f(X^m)]^m' (mod X^r - 1, p)。

同样,由于 m' 对于 f(X) 具有内省特性,在将 X 替换为 Xm 后,我们有(对于 m' 的内省性方程):
[f(X^m)]^m' ≡ f(X^(m·m')) (mod X^(m·r) - 1, p)
≡ f(X^(m·m')) (mod X^r - 1, p)(因为 X^r - 1 整除 Xm·r - 1)。

将上述两个方程结合起来,我们得到:
[f(X)]^(m·m') ≡ f(X^(m·m')) (mod X^r - 1, p)。

对于一个数字 m,使得 m 具有内省特性的多项式集合在乘法下也是封闭的。

引理 4.6. 如果 m 对于 f(X) 和 g(X) 具有内省特性,那么它对于 f(X) · g(X) 也具有内省特性。
证明:我们有:
[f(X) · g(X)]^m = [f(X)]^m · [g(X)]^m
= f(X^m) · g(X^m) (mod X^r - 1, p)。

上述两个引理一起暗示了集合 I = {(n/p)^i · p^j | i, j ≥ 0} 中的每个数字对于集合 P = {Σ(a=0)(X + a)^ea | ea ≥ 0} 中的每个多项式都具有内省特性。现在我们基于这些集合定义两个将在证明中起关键作用的群。

第一组是 I 中所有数字对 r 取模的剩余集。由于(n, r)=(p, r)= 1,这是 Z*_r 的一个子群。设 G 为该群,|G| = t。G 是由 n 和 p 对 r 取模生成的,且由于 or(n) > log2 n,t > log2 n。

为了定义第二个群,我们需要一些关于有限域上旋转多项式的基本事实。设 Qr(X) 是 Fp 上的第 r 个旋转多项式。多项式 Qr(X) 整除 X^r - 1 并分解为次数为 or(p) 的不可约因子[LN]。设 h(X) 是其中一个不可约因子。由于 or(p) > 1,h(X) 的次数大于 1。第二个群是 P 中多项式对 h(X) 和 p 取模的剩余集。设 G 为该群,由 F = Fp[X]/(h(X)) 中的元素 X、X+1、X+2、...、X+ 生成,是 F 的乘法群的子群。

下面的引理证明了对群 G 的大小有一个下界。这是对 Hendrik Lenstra Jr. 展示的一个界的轻微改进[Len],而该界又改进了我们先前论文的一个界[AKS]。

引理 4.7(Hendrik Lenstra Jr.)。|G| ≥ t + √t - 1。
证明:首先注意,由于 h(X) 是旋转多项式 Qr(X) 的因子,X 是 F 中的第 r 个本原单位根。

现在我们证明,在 P 中度小于 t 的任意两个不同的多项式将映射到 G 中的不同元素。设 f(X) 和 g(X) 是 P 中的两个这样的多项式。假设在域 F 中 f(X) = g(X)。设 m ∈ I。我们也有 [f(X)]^m = [g(X)]^m 在 F 中。由于 m 对于 f 和 g 都具有内省特性,并且 h(X) 整除 X^r - 1,我们得到:

f(X^m) = g(X^m)
在 F 中。这意味着对于每个 m ∈ G,Xm 是多项式 Q(Y) = f(Y) - g(Y) 的根。由于(m, r)= 1(G 是 Z*_r 的子群),每个 Xm 都是

原根。因此,在 F 中 Q(Y) 将有 |G| = t 个不同的根。然而,由于选择的 f 和 g,Q(Y) 的次数小于 t。这是一个矛盾,因此在 F 中 f(X) = g(X)。
注意,在 Fp 中,对于 1 ≤ i ≠ j ≤ ,i ≠ j。因为 = ⌈φ(r)log n⌉ < √r log n < r 且 p > r。因此,在 F 中元素 X、X + 1、X + 2、...、X + 都是不同的。此外,由于 h 的次数大于 1,对于每个 a,0 ≤ a ≤ ,在 F 中都有 X + a ≠ 0。因此,在 G 中至少存在 + 1 个不同的一次多项式。因此,在 G 中至少存在 t + √t - 1 个次数小于 t 的不同多项式。

如果 n 不是 p 的幂,则 G 的大小也可以上界:

引理 4.8. 如果 n 不是 p 的幂,则 |G| ≤ n√t。
证明:考虑 I 的以下子集:
ˆI = {(n/p)^i · p^j | 0 ≤ i, j ≤ ⌈√t⌉}。

如果 n 不是 p 的幂,则集合 ˆI 有 (⌈√t⌉ + 1)^2 > t 个不同的数字。由于 |G| = t,ˆI 中至少有两个数字在模 r 情况下是相等的。设这些数字为 m1 和 m2,其中 m1 > m2。因此我们有:
X^m1 ≡ X^m2 (mod X^r - 1)。

设 f(X) ∈ P。那么,
[f(X)]^m1 = f(X^m1) (mod X^r - 1, p)
= f(X^m2) (mod X^r - 1, p)
= [f(X)]^m2 (mod X^r - 1, p)。

这意味着在域 F 中 [f(X)]^m1 = [f(X)]^m2。因此,f(X) ∈ G 是多项式 Q'(Y) = Y^(m1 - m2) 的根在域 F 中。

由于 f(X) 是 G 中的任意元素,多项式 Q'(Y) 在 F 中至少有 |G| 个不同的根。多项式 Q'(Y) 的次数为 m1 ≤ (n/p · p)^⌈√t⌉ ≤ n√t。这表明 |G| ≤ n√t。

有了对 G 大小的估计,现在我们准备证明算法的正确性:

引理 4.9. 如果算法返回 PRIME,则 n 是素数。

证明:假设算法返回 PRIME。根据引理 4.7,对于 t = |G| 和 = ⌈φ(r)log n⌉:

|G| ≥ ⌈t + /t - 1⌉
≥ ⌈ + 1 + ⌈√tlog n⌉⌉/⌈√tlog n⌉
≥ ⌈2√tlog n + 1/√tlog n⌉

2√tlog n + 1(因为 ⌈√tlog n⌉ > ⌈log2 n⌉ ≥ 1)
≥ n√t。

根据引理 4.8,如果 n 不是 p 的幂,则 |G| ≤ n√t。因此,n = pk,其中 k > 0。如果 k > 1,则算法将在步骤 1 中返回 COMPOSITE。因此,n = p。

这完成了定理 4.1 的证明。

  • 复杂度分析与提优

计算算法的时间复杂度是直接的。在这些计算中,我们使用一个事实:两个 m 位数之间的加法、乘法和除法操作可以在 O~(m) 的时间内完成[vzGG]。同样,两个系数最多为 m 位大小的度为 d 的多项式的这些操作可以在 O~(d · m) 的步骤内完成[vzGG]。

定理 5.1. 该算法的渐进时间复杂度为 O~(log21/2 n)。
证明:算法的第一步需要的渐进时间为 O~(log3 n)[vzGG]。
在第 2 步中,我们找到一个满足 or(n) > log2 n 的 r。这可以通过尝试连续的 r 值,并检查对于每个 k ≤ log2 n 是否 nk ≡ 1 (mod r) 来完成。对于特定的 r,这将涉及最多 O(log2 n) 次模 r 的乘法,因此将花费时间为 O~(log2 n log r)。根据引理 4.3,我们知道只需要尝试 O(log5 n) 个不同的 r。因此,步骤 2 的总时间复杂度为 O~(log7 n)。
第三步涉及计算 r 个数的最大公约数。每次最大公约数计算需要时间 O(log n)[vzGG],因此,这一步的时间复杂度为 O(r log n) = O(log6 n)。第四步的时间复杂度只是 O(log n)。
在第 5 步中,我们需要验证 φ(r)log n 个方程。每个方程需要 O(log n) 次度为 r 的多项式的乘法,系数为最多 m 位大小的。

因此,每个方程可以在 O~(r log2 n) 的步骤内验证。因此,第 5 步的时间复杂度为 O∼(rφ(r)log3 n) = O∼(r3/2 log3 n) = O∼(log21/2 n)。这个时间支配了所有其他步骤,因此是算法的时间复杂度。

算法的时间复杂度可以通过改进对 r 的估计(在引理 4.3 中完成)来提高。当然,最理想的情况是 r = O(log2 n),在这种情况下,算法的时间复杂度将是 O∼(log6 n)。事实上,有两个猜想支持这样一个 r(以下 ln 为自然对数):

阿廷猜想。对于任何不是完全平方数的自然数 n,使得 oq(n) = q - 1 的素数 q ≤ m 的数量在渐近意义下是 A(n) · m / ln m,其中 A(n) 是阿廷常数,A(n) > 0.35。

Sophie-Germain 素数密度猜想。满足 2q + 1 也是素数的素数 q ≤ m 的数量在渐近意义下是 2C2m / ln2 m,其中 C2 是孪生素数常数(估计约为 0.66)。具有这种性质的素数 q 被称为 Sophie-Germain 素数。

如果第二个猜想成立,我们可以得出 r = O∼(log2 n):
根据 Sophie-Germain 素数的密度,必须至少存在 log2 n 个这样的素数,它们介于 8 log2 n 和 c log2 n(log log n)2 之间,其中 c 是一个合适的常数。对于任何这样的素数 q,oq(n) ≤ 2 或 oq(n) ≥ q - 1/2。任何使得 oq(n) ≤ 2 的 q 必须整除 n^2 - 1,因此这样的 q 的数量受到 O(log n) 的限制。这意味着必须存在一个素数 r = O∼(log2 n),使得 or(n) > log2 n。这样的 r 将产生一个时间复杂度为 O∼(log6 n) 的算法。
对于证明这一猜想也已经有了一些进展。设 P(m) 表示数 m 的最大素数因子。Goldfeld [Gol] 表示具有 P(q - 1) > q1/2 + c,其中 c ≈ 1/12 的素数 q 具有正密度。Fouvry 进一步证明了:

引理 5.2([Fou])。存在常数 c > 0 和 n0,对于所有 x ≥ n0:
|{q | q 是素数,q ≤ x 且 P(q - 1) > q2/3}| ≥ c·x/ln x。

上述引理现在已知对指数高达 0.6683 仍然成立[BH]。利用上述引理,我们可以改进对我们算法的分析:

定理 5.3. 该算法的渐进时间复杂度为 O∼(log15/2 n)。
证明:如上所述,具有 P(q - 1) > q2/3 的素数 q 的高密度意味着算法的第 2 步将找到一个 r = O(log3 n),使得 or(n) > log2 n。这将将算法的复杂度降低到 O∼(log15/2 n)。
最近,Hendrik Lenstra 和 Carl Pomerance [LP1] 提出了我们算法的一个改进版本,其时间复杂度可以被证明为 O∼(log6 n)。

  • 未来工作

在我们的算法中,步骤 5 中的循环需要运行 φ(r)log n 次,以确保群 G 的大小足够大。如果我们能够证明一个更小的 (X + a) 集合也可以生成所需大小的群,则循环的迭代次数可以减少。这似乎是非常可能的。
如果以下猜想成立,我们可以进一步将复杂度提高到 O∼(log3 n),这个猜想在 [BP] 中提出,并在 [KS] 中对 r ≤ 100 和 n ≤ 1010 进行了验证:

猜想 6.1. 如果 r 是一个不整除 n 的素数,并且 (X - 1)n ≡ Xn - 1 (mod Xr - 1, n),那么要么 n 是素数,要么 n^2 ≡ 1 (mod r)。

如果这个猜想成立,我们可以稍微修改算法,首先搜索一个不整除 n^2 - 1 的 r。这样的 r 肯定可以在范围 [2, 4 log n] 内找到。因为小于 x 的质数的乘积至少为 e^x(参见 [Apo])。然后我们可以测试方程 (6) 是否成立。验证这个方程需要时间 O∼(r log2 n)。这将给出时间复杂度为 O∼(log3 n)。
最近,Hendrik Lenstra 和 Carl Pomerance [LP2] 给出了一个启发式论证,表明上述猜想是错误的。然而,该猜想的某些变体仍然可能是正确的(例如,如果我们强制 r > log n)。

致谢。我们要感谢 Hendrik Lenstra Jr.,允许我们使用他对改进群 G 大小下界的观察。这使得证明完全简单化(早期版本需要引理 5.2 的密度界限),简化了证明并改进了时间复杂度!

我们还要感谢 Adam Kalai、Amit Sahai 和 Madhu Sudan 允许我们使用他们引理 4.8 的证明。这使得对于 G 大小的上界和下界的证明变得类似(现在都基于域中多项式的根的数量)。
我们感谢 Somenath Biswas、Rajat Bhattacharjee、Jaikumar Radhakrishnan 和 V. Vinay 进行了许多有益的讨论。
我们感谢 Erich Bach、Abhijit Das、G. Harman、Roger Heath-Brown、Pieter Moree、Richard Pinch 和 Carl Pomerance 提供了有用的参考资料。
自从我们的预印本出现以来,许多研究人员费心指出了我们论文中的各种遗漏。我们感谢所有人。我们已尽力将他们的建议纳入论文中,如果我们遗漏了一些内容,请谅解。
最后,我们要感谢匿名审稿人的建议和观察,这些对我们非常有帮助。

印度伊坎普尔理工学院计算机科学与工程系,印度坎普尔

电子邮件地址:manindra@cse.iitk.ac.in
nitinsa@cse.iitk.ac.in
kayaln@cse.iitk.ac.in

  • 附录

1)Co-NP类

co-NP 类是计算复杂性理论中的一个重要概念,它是 NP 类的补集。在 co-NP 类中的问题是可以用一个非确定性图灵机在多项式时间内验证一个给定解不是问题的实例。换句话说,如果一个问题的否定形式可以在多项式时间内验证,则该问题属于 co-NP 类。

co-NP 类中的问题通常是关于证明问题不存在的。例如,判断一个数是否为合数(非素数)是一个 co-NP 类的问题,因为可以轻松验证一个数不是合数,但很难证明一个数是素数。

co-NP 类与 NP 类一样,也是计算复杂性理论中的重要研究对象,对理解问题的难解性和可证明性起着关键作用。

2)符号含义

  • G:群
  • n:一个数
  • r:另一个数
  • φ(r):欧拉函数
  • log n:以 2 为底的对数
  • O∼(m):渐进符号,表示在常数因子意义上的上界
  • d:度
  • m:位数
  • X:一个值
  • a:另一个值
  • P(m):数 m 的最大素数因子

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值