论文笔记[2]——AKS素性测试

文章: Agrawal M, Kayal N, Saxena N. PRIMES Is in P[J]. Annals of Mathematics, 2004, 160(2):781-793.

太长不看版

文章分为正确性和复杂度两部分:

  • 正确性: 素数显然会返回 PRIME, 只需证返回 PRIME 的是素数. 返回素数的地方只有 Step 2Step 6, 分别讨论之.
    • Step 4: 若 \(n\) 是合数则会在 Step 3 中返回, 矛盾.
    • Step 6: 分段考虑.
      1. 先考虑 Step 2\(r\) 的范围, 可得 \(r\leqslant\lceil\log^5n\rceil\).
      2. 定义多项式之间的关系introspective: \([f(x)]^m=f(x^m)~({\rm mod}~x^r-1,p)\), 则该性质对 \(m\)\(f\) 都满乘积性质.
      3. 由于在 Step 5 没有返回 COMPOSITE, 故 \(\frac{n}{p},p\)\(x+a\) 是introspective的. 故 \(\frac{n}{p}\)\(p^j\) 的任意乘积对 \(x+a~(0\leqslant a\leqslant l)\) 的任意乘积是introspective的.
      4. 进一步, 通过建立两个群 \(G\)\(\mathcal{G}\), 可得到 \(|\mathcal{G}|\) 的下界和一个由条件的上界. 并可最终得到 \(n=p\), 即 \(n\) 是素数.
    • 至此算法正确性得证.
  • 复杂度: 逐步分析可知 Step 5 复杂度最高, 为 \(O^\sim(\log^\frac{21}{2}n)\).

以下是详细的版本

记号说明和准备工作

记号列表

文中出现的记号记录如下:

  • \(P\): 图灵机在多项式时间内可以解决的问题;
  • \(F_p\) 表示阶为 \(p\) 的有限域, 其中 \(p\) 是素数;
  • \(f(x)=g(x)~({\rm mod}~h(x),n)\): 表示 \(f(x)=g(x)\)\(\mathbb{Z}_n[x]/\langle h(x)\rangle\) 中成立;
  • \(O^\sim (t(n))\): 表示 \(O(t(n))\cdot {\rm poly}(\log t(n))\). 其中 \(\log\) 表示以 \(2\) 为底的对数;
  • \(o_r(a)\): 表示 \(a\)\(r\) 的指数. 即最小的 \(k\), s.t. \(a^k=1~({\rm mod}~r)\).
为不影响思路的连贯性, 长一点的证明细节都补在最后.

准备工作

LEMMA 1.\(a\in\mathbb{Z}\), \(n\geqslant 2\in\mathbb{N}\), 且 \((a,n)=1\), 则 \(n\) 是素数当且仅当 \[(x+a)^n=x^n+a~({\rm mod~n}).\] Proof. 直接讨论, 利用二项式系数的性质即可.

PRELIMINARY 1.\(h(x)\)\(F_p[x]\) 中的 \(d\) 次不可约多项式, 则 \(F_p[x]/\langle h[x]\rangle\) 是阶为 \(p^d\) 的有限域.
Proof.\(F(\alpha)=0\), 考虑映射 \(\varphi:~F[\alpha]\to F[x],~f(\alpha)\mapsto f(x)\), 则由环同态基本定理可得 \[F(\alpha)=F[\alpha]\simeq F[x]/\langle p(x)\rangle.\] 由此即可证得结论.

PRELIMINARY 2. 对于 \(\forall a,r\in\mathbb{N}\) 满足 \((a,r)=1\), 都有 \(o_r(a)~\vert~\phi(r)\).
Proof. 若不满足上式, 与 \(o_r(a)\) 的最小性矛盾.

LEMMA 2.\({\rm LCM}(n)\) 表示前 \(n\) 个数的lcm, 则对 \(n\geqslant 7\) 有: \({\rm LCM}(n)\geqslant 2^n\).
Proof. Nair M. On Chebyshev-type inequalities for primes[J]. American Mathematical Monthly, 1982, 89(2):126-129.

算法正确性

需要证明以下两条:

  1. \(n\) 是素数\(\to\)算法返回 PRIME ;
  2. 算法返回 PRIME \(\to\)\(n\) 是素数.

事实上第一条是显然的, 主要部分是第二条的证明.

\(n\) 是素数\(\to\)算法返回 PRIME

LEMMA 3.\(n\) 是素数, 则算法返回 PRIME.
Proof. 这一条其实是很显然的. 证明全是废话, 略掉.

算法返回 PRIME \(\to n\) 是素数

算法返回 PRIME 的地方只有两处, 分别为 Step 4Step 6. 以下分别讨论之.

Step 4 返回 PRIME \(\to n\) 是素数

证明很容易: 如果 \(n\) 是合数且 \(n\leqslant r\), 则在Step3 中一定可找到 \(n\) 的一个非平凡因子. 故在 Step 3 一定会返回 COMPOSITE, 矛盾! 故 Step 4 返回 PRIME \(\Rightarrow n\) 是素数.

Step 6 返回 PRIME \(\to n\) 是素数

算法的核心步骤是 Step 2Step 5. 算法在 Step 2 中取了一个 \(r\) 值, 所以我们从 \(r\) 的大致取值开始考虑.

LEMMA 4. \(\exists r\leqslant\max\{3,\lceil\log^5 n\rceil\}\), s.t. \(o_r(n)>\log^2n\).
Proof. 单独讨论 \(n=2\) 情况, 即可设 \(n>2\), 此时可利用 LEMMA 2 进行证明.

由于 \(o_r(n)>1\), 故存在 \(n\) 的素因子 \(p\), s.t. \(o_r(p)>1\) (否则容易得到 \(o_r(n)=1\), 矛盾). 进一步应有 \(p>r\), 否则在 Step 3Step 4 就已经判断了 \(n\) 的素性. 又由于 \((n,r)=1\)(否则在 Step 3Step 4 会判定 \(n\) 素性), 故 \(p,n\in\mathbb{Z}_r^*\). \(p\)\(r\) 在后文中将被固定, 再令 \(l=\lfloor\sqrt{\phi(r)}\log n\rfloor\).

由于算法执行到了 Step 6, 故在 Step 5 没有返回 COMPOSITE. 即: \[(x+a)^n=x^n+a~({\rm mod}~x^r-1,n)\quad\forall a,0\leqslant a\leqslant l.\] 于是 \[(x+a)^n=x^n+a~({\rm mod}~x^r-1,p)\quad\forall a,0\leqslant a\leqslant l.\] 由以上两式可得: \[(x+a)^\frac{n}{p}=x^\frac{n}{p}+a~({\rm mod}~x^r-1,p)\quad\forall a,0\leqslant a\leqslant l.\] 结合 LEMMA 1, 此时的 \(n\)\(\frac{n}{p}\) 都满足 LEMMA 1 的条件, 将该性质定义如下:

DEFINITION 1. 对于多项式 \(f(x)\)\(m\in\mathbb{N}\), 称 \(m\) 是instropective的, 如果 \[[f(x)]^m=f(x^m)~({\rm mod}~x^r-1,p).\]

很容易证明instropective有如下性质:

LEMMA 5.\(m\)\(m'\)\(f(x)\) 都是instropective的, 则 \(m\cdot m'\)\(f(x)\) 也是instropective的.

LEMMA 6.\(m\)\(f(x)\)\(g(x)\) 都是instropective的, 则 \(m\)\(f(x)\cdot g(x)\) 也是instropective的.

于是可以得到如下事实:

  • 由前文的三个等式可知 \(\frac{n}{p}\)\(p\)\(x+a\) 是instropective的, \(\forall 0\leqslant a\leqslant l\).
  • 进一步, 集合 \(I=\{(\frac{n}{p})^i\cdot p^j~\vert~ i,j>0\}\) 中的每个数对集合 \(P=\{\prod\limits_{a=0}^l(x+a)^{e_a}~\vert~ e_a\geqslant 0\}\) 中的每个多项式都是introspective的.

进一步可在上述集合的基础上如下定义两个群:

  • \(G\): \(I\) 中所有的数模 \(r\) 的余数构成一个群. 设 \(\vert G\vert=t\).
    1. 显然 \(G\subset \mathbb{Z}_r^*\)(生成元都在 \(\mathbb{Z}_r^*\) 中).
    2. \(o_r(n)>\log^2n\) 可知, \(t>\log^2n\).
  • \(\mathcal{G}\): 由 \(x,x+1,\cdots,x+l\) 在域 \(F=F_p[x]/\langle h(x)\rangle\) 中生成的群.
    1. 显然 \(\mathcal{G}\)\(F\) 乘法群的子群.
    2. \(P\) 中所有多项式在模 \(h(x)\)\(p\) 的意义下关于乘法构成一个群.

\(\vert\mathcal{G}\vert\) 的范围由如下引理给出(证明细节见后文):

LEMMA 7. 下界: (Hendrik Lenstra Jr.) \(\vert\mathcal{G}\vert\geqslant\binom{t+l}{t-1}\).

LEMMA 8. 上界:\(n\) 不是 \(p\) 的方幂, 则 \(\vert\mathcal{G}\vert\leqslant n^{\sqrt{t}}\).

进一步即可得到最终的结果:

LEMMA 9. 若算法返回 PRIME, 则 \(n\) 是素数.
Proof.LEMMA 7, 有: \[ \begin{align} \vert\mathcal{G}\vert &\geqslant \binom{t+l}{t-1} & \\ &\geqslant \binom{l+1+\lfloor\sqrt{t}\log n\rfloor}{\lfloor\sqrt{t}\log n\rfloor} &\quad (由于~t>\sqrt{t}\log n) \\ &\geqslant \binom{2\lfloor\sqrt{t}\log n\rfloor+1}{\lfloor\sqrt{t}\log n\rfloor} &\quad (由于~l\geqslant \lfloor\sqrt{t}\log n\rfloor) \\ &\geqslant 2^{\lfloor\sqrt{t}\log n\rfloor+1} &\quad (由于~\lfloor\sqrt{t}\log n\rfloor>\lfloor\log^2n\rfloor\geqslant 1) \\ &\geqslant n^{\sqrt{t}}. \end{align} \]LEMMA 8, 当 \(n\) 不是 \(p\) 的方幂时, 有\(\vert\mathcal{G}\vert\leqslant n^\sqrt{t}\). 故 \(\exists k\), s.t. \(n=p^k\). 若 \(k>1\), 则在 Step 1 就会返回 COMPOSITE. 故只有 \(k=1\), 即 \(n=p\), 即 \(n\) 为素数.

至此, 算法正确性已经证明完毕. 可归纳为如下定理:

THEOREM 1. 算法返回 PRIME 当且仅当 \(n\) 是素数.

复杂度证明

首先做如下假定:

  • \(m\) 位数的四则运算耗时均为 \(O^\sim(m)\);
  • 两个系数为 \(m\) 位整数的 \(d\) 次多项式的四则运算耗时为 \(O^\sim(d\cdot m)\).
  • \(n\) 的位数大致为 \(O(\log n)\).

对于算法的复杂度, 我们将证明如下定理:

THEOREM 2. 算法的渐进时间复杂度为 \(O^\sim(\log^{\frac{21}{2}}n)\).
Proof. 按照算法步骤逐个讨论:
  Step 1: 判断是否整数的幂.
      时间复杂度 \(O^\sim(\log^3n)\), 参见 Mordern Computer Algebra. Cambridge Univ.;
  Step 2: 求一个 \(r\), s.t. \(o_r(n)>\log^2n\).
      1. 取 \(r\), s.t. \(o_r(n)>\log^2n\). 只需枚举 \(k\leqslant\log^2n\), 故至多需要 \(O(\log^2n)\).
      2. 取定一个 \(r\) 后, 至多进行 \(O(\log^2n)\) 次模 \(r\) 乘法, 开销至多 \(O^\sim(\log^2n\log r)\).
      3. 由 LEMMA 4, 至多需要测试 \(O(\log^5n)\) 个不同的 \(r\).
      综上, Step 2 复杂度至多 \(O^\sim(\log^7n)\).
  Step 3: 需要求 \(r\) 次gcd.
      1. 每次 gcd 的开销为 \(O(\log n)\).
      2. \(r\) 的开销为 \(O(\log^5n)\).
      综上, Step 3 的复杂度为 \(O(r\log n)=O(\log^6n)\).
  Step 4: 只需要比较 \(n\)\(r\) 大小.
      时间复杂度 \(O(\log n)\).
  Step 5: 验证 \(\lfloor\sqrt{\phi(r)}\log n\rfloor\) 个多项式等式.
      1. 每个等式次数都是 \(r\), 故单次验证的开销为 \(O^\sim(r\log^2 n)\).
      2. 总复杂度为 \(O^\sim(r\sqrt{\phi(r)}\log^3n)\).
      综上, Step 5 的复杂度为 \(O^\sim(r\sqrt{\phi(r)}\log^3n)=O^\sim(r^\frac{3}{2}\log^3n)=O^\sim(\log^\frac{21}{2}n)\).
  Step 6: 这步啥也没干, 就返回了一个 PRIME.
      时间复杂度 \(O(1)\).
  综上, 算法的时间复杂度为 \(O(\log^\frac{21}{2}n)\).

至此, 算法复杂度证明完毕.

  • 貌似还有一些改进, 有点麻烦, 以后再说.

一些引理的证明细节

LEMMA 1 Proof. \(\forall 0<i<n\), \(x^i\)\(((x+a)^n-(x^n+a))\) 中的系数为 \(\binom{n}{i}a^{n-i}\).
- 若 \(n\) 为素数, 则 \(\binom{n}{i}=0~({\rm mod~n})\), 故 \(\forall 0<i<n\), \(x^i\) 系数均为 \(0\), 即原式成立.
- 若 \(n\) 为合数, 取 \(q~\vert~n\), 且 \(q^k~||~n\). 则 \(q^k\) 不能整除 \(\binom{n}{q}\), 且 \((q,a^{n-q})=1\). 故 \(x^q\) 系数不为 \(0\). 故原式不成立.
综上, 原式成立当且仅当 \(n\) 是素数.

LEMMA 2 Proof. 考虑积分 \[I(m,n)=\int_0^1 x^{m-1}(1-x)^{n-m}{\rm d}x\quad (1\leqslant m\leqslant n).\] 一方面, 由 \((1-x)^{n-m}\) 的展式可知 \(I(m,n)\) 是分母整除 \({\rm LCM}(n)\) 的有理数: \[I(m,n)=\sum\limits_{0\leqslant j\leqslant n-m}(-1)^j\binom{n-m}{j}\frac{1}{m+j}\in\frac{1}{d_n}\mathbb{Z}.\] 另一方面, 注意到 \(\forall 0\leqslant y\leqslant 1\), 有 \[\sum\limits_{1\leqslant m\leqslant n}\binom{n-1}{m-1}y^{m-1}I(m,n)=\int_0^1(1-x+xy)^{n-1}{\rm d}x=\frac{1}{n}\sum\limits_{1\leqslant m\leqslant n}y^{m-1}.\] 从而 \[I(m,n)=\frac{1}{n}\binom{n-1}{m-1}=\frac{1}{m}\binom{n}{m}\quad (1\leqslant m\leqslant n).\] 这说明对 \(1\leqslant m\leqslant n\), 有 \(m\binom{n}{m}~\vert~d_n\). 于是有 \[\left.\left.n\binom{2n}{n}~\right|~{\rm LCM}(2n)~\right|~{\rm LCM}(2n+1)~~且~~\left.(n+1)\binom{2n+1}{n}=(2n+1)\binom{2n}{n}~\right|~{\rm LCM}(2n+1).\] 由于 \((n,2n+1)=1\), 故 \[\left.n(2n+1)\binom{2n}{n}~\right|~{\rm LCM}(2n+1).\] 由于 \(\binom{2n}{n}\)\((1+x)^{2n}\) 系数中最大的一项, 故 \[{\rm LCM}(2n+1)\geqslant n4^n\quad (n\geqslant 1).\] 从而 \[{\rm LCM}(2n+1)\geqslant 2\cdot 4^n=2^{2n+1}\quad (n\geqslant 2).\]\[{\rm LCM}(2n+2)\geqslant {\rm LCM}(2n+1)\geqslant 4^{n+1}\quad (n\geqslant 4).\] 以上已经证明了对于 \(n\geqslant 9\)\({\rm LCM}(n)\geqslant 2^n\). 经验证 \(n=7,8\) 也成立, 于是原式对 \(\forall n\geqslant 7\) 成立.

LEMMA 4 Proof.\(n=2\) 时, 取 \(r=3\) 即可. 故以下假设 \(n>2\), 即有 \(\lceil\log^5n\rceil>10\)LEMMA 2 适用.
先证存在 \(r\leqslant m\), s.t. \(r\not| N\), 其中 \[N=n^{\lfloor \log m\rfloor}\cdot\prod\limits_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1).\] 假设 \(r~\vert~N\), \(\forall 1\leqslant r\leqslant m\), 则有 \({\rm LCM}(m)\leqslant N\). 注意到 \[ \begin{align} N &= n^{\lfloor \log m\rfloor}\cdot\prod\limits_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1) \\ &< n^{\lfloor \log m\rfloor}\cdot\prod\limits_{i=1}^{\lfloor\log^2n\rfloor}n^i \\ &= n^{\lfloor\log m\rfloor+1+2+\cdots+\log^2n} \\ &= n^{\lfloor\log m\rfloor+\frac{1}{2}[\log^2n(\log^2n+1)]} \\ &= n^{\lfloor\log m\rfloor+\frac{1}{2}[\log^4n+\log^2n]} \\ &< n^{\log^4n} \\ &= (2^{\log n})^{\log^4n} \\ &= 2^{\log^5n} \leqslant 2^m. \end{align} \]\(N<2^m\), 这与 \({\rm LCM}(m)\geqslant 2^m\) 矛盾. 故集合 \(\{r~|~1\leqslant r\leqslant m,~r\not| N\}\) 非空. \(r\) 为其中的最小值.
至此我们已经找到了 \(r\leqslant m\), 以下只需证明 \(o_r(n)\) 存在, 且 \(o_r(n)>\log^2n\). 由于 \(o_r(n)\) 存在当且仅当 \((r,n)=1\), 故只需证明 \(r\)\(n\) 互素. 设 \(r=ab\), 其中 \(a\)\((n,r)\) 的所有素因子组成, \(b\) 由其他素因子组成, 即 \((a,b)=1\). 显然有 \((b,n)=1\).
注意到 \(a\) 的任意素因子在 \(a\) 中的最高幂次都不会超过 \(\lfloor\log m\rfloor\), 否则 \(a\leqslant r\) 会超过 \(m\). 故 \(a\) 的任意素因子在 \(a\) 中的幂次都不超过在 \(n^{\lfloor\log m\rfloor}\) 中的幂次, 故 \(a~|~n^{\lfloor\log m\rfloor}\).
另一方面, 有 \(b\not|n^{\lfloor \log m\rfloor}\cdot\prod\limits_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1)\) 且由 \((b,n)=1\) 可知 \(b\not| n^{\lfloor\log m\rfloor}\). 故 \(b\not| N\). 然而由 \(r\) 的定义可知, \(r\leqslant b\), 于是有 \(r=b\). 故 \((r,n)=1\), 故 \(o_r(n)\) 存在.
最后证明 \(o_r(n)>\log^2n\): 假设 \(d=o_r(n)\leqslant\log^2n\), 则由定义有 \(n^d=1~({\rm mod}~r)\), 即 \(n^d-1=0~({\rm mod}~r)\), 故 \(n~|~(n^d-1)\). 即 \(r\) 整除 \(N\) 的一个因子 \(n^d-1\), 因而 \(r~|~N\), 矛盾! 于是有 \(o_r(n)>\log^2n\).
至此, 引理得证.

LEMMA 7 Proof. 注意到 \(h(x)\)\(r\) 次分圆多项式 \(Q_r(x)\) 的一个因式, \(x\)\(F\) 上的 \(r\) 次本原单位根. 以下证明: \(P\) 中任意两个不同的次数不超过 \(t\) 的多项式在 \(\mathcal{G}\) 中会对应到不同的元素.
\(f(x),g(x)\in P\) 是这样的两个多项式. 假设 \(f(x)=g(x)\)\(F\) 上成立. 取 \(m\in I\), 则在 \(F\) 中有 \([f(x)]^m=[g(x)]^m\). 由于 \(m\)\(f\)\(g\) 都是introspective的, 且 \(h(x)~\vert~x^r-1\), 故 \[f(x^m)=g(x^m)\quad\text{in}~F.\] 这说明 \(\forall m\in G\), \(x^m\) 总是多项式 \(Q(y)=f(y)-g(y)\) 的根. 由于 \(m\in G\subset\mathbb{Z}_r^*\), 故 \((m,r)=1\), 故每个这样的 \(x^m\) 都是 \(r\) 次本原单位根. 故这样得到了 \(Q(y)\)\(\vert G\vert=t\) 个不同的根. 然而 \(Q(y)\) 的次数小于 \(t\), 故根也少于 \(t\) 个. 矛盾! 故在 \(F\) 上有 \(f(x)\neq g(x)\).
注意到 \(l=\lfloor\sqrt{\phi(r)}\log n\rfloor<\sqrt{r}\log n<r\)\(p>r\), 故 \(x,x+1,\cdots,x+l\)\(F\) 中两两不等. 同时, 由 \(h(x)\) 的次数大于 \(1\) 可知, \(x+a\neq 0\), \(\forall 0\leqslant a\leqslant l\). 于是 \(\mathcal{G}\) 中存在至少 \(l+1\) 个一次多项式. \(\mathcal{G}\) 中至少存在 \(\binom{t+l}{t-1}\) 个次数小于 \(t\) 的多项式.

LEMMA 8 Proof. 考虑 \(I\) 的以下子集: \[\hat{I}=\{(\frac{n}{p})^i\cdot p^j~\vert~0\leqslant i,j\leqslant\lfloor\sqrt{t}\rfloor\}.\]\(n\) 不是 \(p\) 的方幂, 则 \(\hat{I}\)\((\lfloor\sqrt{t}\rfloor+1)^2>t\) 个不同元素.
由于 \(|G|=t\), 故由抽屉原理可知 \(\hat{I}\) 中至少存在 \(2\) 个元素模 \(r\) 同余. 令其为 \(m_1,m_2\), 不妨设 \(m_1>m_2\). 则有: \[x^{m_1}=x^{m_2}~({\rm mod}~x^r-1).\]\(f(x)\in P\), 则 \[ \begin{align} [f(x)]^{m_1} &= f(x^{m_1})~({\rm mod}~x^r-1,p) \\ &= f(x^{m_2})~({\rm mod}~x^r-1,p) \\ &= [f(x)]^{m_2}~({\rm mod}~x^r-1,p). \end{align} \] 即在 \(F\) 上有 \([f(x)]^{m_1}=[f(x)]^{m_2}\). 于是 \(f(x)\in\mathcal{G}\) 是多项式 \(Q'(y)=y^{m_1}-y^{m_2}\)\(F\) 中的一个根. 由于 \(f(x)\)\(\mathcal{G}\) 中的任意一个元素, 故 \(Q'(y)\)\(F\) 中至少有 \(|\mathcal{G}|\) 个不同的根. 而 \[{\rm deg}~Q'(y)=m_1\leqslant (\frac{n}{p}\cdot p)^{\lfloor\sqrt{t}\rfloor}.\] \(|\mathcal{G}|\leqslant n^{\lfloor\sqrt{t}\rfloor}.\)