多项式复杂度内的素性检测算法 PRIMES is in P
发表于 Annals of Mathematics 160 (2004), 781-793
原作者:Manindra Agrawal, Neeraj Kayal, Nitin Saxena
译:谷雨同学
摘要
在此文中,我们给出了一个无条件的、确定性的多项式时间复杂度算法,它可用于检测一个输入的整数是素数还是合数。
1. 概述
素数是数学和数论中最为基础的重要部分,所以人们抱有很大的兴趣去研究素数的性质。其中一个性质就是如何去高效地判断一个整数是否为素数。这样高效的检测将在实践中非常有用:密码学的协议需要用到大素数来完成。
记 P R I M E S \bf{PRIMES} PRIMES 为所有素数的集合。素数的定义告诉我们如何决定一个数 n n n 是否属于 P R I M E S \bf{PRIMES} PRIMES :尝试用每一个(大于 1 1 1 的) 整数 m ⩽ n m\leqslant\sqrt n m ⩽ n 去除 n n n ——如果存在一个 m m m 整除 n n n ,那么 n n n 就是合数,否则 n n n 就是素数。这种测试方法在古希腊时代就已经被发现,是埃拉托斯特尼 (约公元前 240)筛法 (一种生成小于 n n n 的素数集的算法)的一个特殊情形。但这种测试方法是低效率的:它需要 Ω ( n ) \varOmega(\sqrt n) Ω ( n ) 的步骤来决定 n n n 是否为素数。一个高效的测试方法应当至多需要多项式时间(指输入规模为 ⌈ log n ⌉ \lceil\log n\rceil ⌈ log n ⌉ 时)步骤完成。费马小定理几乎 给出了这样的一个高效测试方法。费马小定理是说:对于任何质数 p p p ,任何不整除于 p p p 的数 a a a ,都有 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1\pmod p a p − 1 ≡ 1 ( mod p ) 。
费马小定理的证明
引理 1.1 ∀ a , b , c ∈ Z \forall a,b,c\in\mathbb Z ∀ a , b , c ∈ Z ,m ∈ N + m\in\mathbb N^+ m ∈ N + ,且 ( m , c ) = def GCD ( m , c ) = 1 (m,c)\xlongequal{\text{def}}\operatorname{GCD}(m,c)=1 ( m , c ) def GCD ( m , c ) = 1 ,则当 a c ≡ b c ( m o d m ) ac\equiv bc\pmod m a c ≡ b c ( mod m ) 时,a ≡ b ( m o d m ) a\equiv b\pmod m a ≡ b ( mod m ) 。
证明 :条件⇒ a c − b c ≡ 0 ( m o d m ) ⇒ ( a − b ) c ≡ 0 ( m o d m ) \rArr ac-bc\equiv0\pmod m\rArr (a-b)c\equiv 0\pmod m ⇒ a c − b c ≡ 0 ( mod m ) ⇒ ( a − b ) c ≡ 0 ( mod m ) 。因 m , c m,c m , c 互素,故可约去 c c c ,得 a − b ≡ 0 ( m o d m ) a-b\equiv0\pmod m a − b ≡ 0 ( mod m ) 。即得。
引理 1.2 Z ∋ m > 1 \mathbb Z\ni m>1 Z ∋ m > 1 ,b ∈ Z b\in\mathbb Z b ∈ Z ,( m , b ) = 1 (m,b)=1 ( m , b ) = 1 。若 a 1 , a 2 , ⋯ , a m a_1,a_2,\cdots,a_m a 1 , a 2 , ⋯ , a m 是模 m m m 的一个完全剩余系,则 b a 1 , b a 2 , ⋯ , b a m ba_1,ba_2,\cdots,ba_m b a 1 , b a 2 , ⋯ , b a m 也是模 m m m 的一个完全剩余系。
完全剩余系:在模 m m m 的剩余类中各取一个元素,这 m m m 个数构成了模 m m m 的完全剩余系。
剩余类:根据整数 a ∈ Z a\in\mathbb Z a ∈ Z 除以 n n n 得到的余数将 Z \mathbb Z Z 划分为 n n n 个等价类,a a a 所在的等价类记作 [ a ] [a] [ a ] 。又称同余类。
证明 :反设存在 1 ⩽ i < j ⩽ m 1\leqslant i<j\leqslant m 1 ⩽ i < j ⩽ m 满足 b a i ≡ b a j ( m o d m ) ba_i\equiv ba_j\pmod m b a i ≡ b a j ( mod m ) ,则根据引理 1.1 得 a i ≡ a j ( m o d m ) a_i\equiv a_j\pmod m a i ≡ a j ( mod m ) 。这不满足 a [ i ] , a [ j ] a[i],a[j] a [ i ] , a [ j ] 构成模 m m m 的完全剩余系,矛盾。故对于 ∀ 1 ⩽ i < j ⩽ m \forall 1\leqslant i<j\leqslant m ∀1 ⩽ i < j ⩽ m ,b a i ≢ b a j ( m o d m ) ba_i\not\equiv ba_j\pmod m b a i ≡ b a j ( mod m ) ,即它们构成完全剩余系。
证明 :对于素数 p p p ,构造模 p p p 的完全剩余系
P = { 1 , 2 , ⋯ , p − 1 } P=\{1,2,\cdots,p-1\} P = { 1 , 2 , ⋯ , p − 1 }
因为 ( a , p ) = 1 (a,p)=1 ( a , p ) = 1 (p p p 是素数,a a a 不是 p p p 的倍数,故两者互素),由引理 1.2 得
A = { a , 2 a , ⋯ , ( p − 1 ) a } A=\{a,2a,\cdots,(p-1)a\} A = { a , 2 a , ⋯ , ( p − 1 ) a }
也是模 p p p 的完全剩余系。由完全剩余系的性质:
1 ⋅ 2 ⋯ ( p − 1 ) ≡ a ⋅ 2 a ⋯ ( p − 1 ) a ( m o d p ) 1\cdot2\cdots(p-1)\equiv a\cdot2a\cdots(p-1)a\pmod p 1 ⋅ 2 ⋯ ( p − 1 ) ≡ a ⋅ 2 a ⋯ ( p − 1 ) a ( mod p )
即 ( p − 1 ) ! ≡ ( p − 1 ) ! ⋅ a p − 1 ( m o d p ) (p-1)!\equiv(p-1)!\cdot a^{p-1}\pmod p ( p − 1 )! ≡ ( p − 1 )! ⋅ a p − 1 ( mod p ) 。
显然 ( ( p − 1 ) ! , p ) = 1 ((p-1)!,p)=1 (( p − 1 )! , p ) = 1 。两侧约去 ( p − 1 ) ! (p-1)! ( p − 1 )! ,即得
a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1\pmod p a p − 1 ≡ 1 ( mod p )
给出一个 a a a 和 n n n ,然后使用“快速幂”算法高效地检查 a n − 1 = 1 ( m o d n ) a^{n-1}=1\pmod n a n − 1 = 1 ( mod n ) 是否满足即可。但这并不是一个正确的算法,因为许多合数 n n n 对于某些 a a a 也满足这个等式(若对所有 a a a 成立,则 n n n 称为卡迈克尔数 [Car])。虽然如此,费马小定理仍然是许多素性检测算法的基础。
自从计算复杂性理论在二十世纪60年代诞生,其相关的记号被正式化、相关的复杂性类被定义,这个问题(指素性检测 问题)得到深入的研究。平凡地,这个问题是 co- NP \text{co-\bf NP} co- NP 类的(即补问题属于 N P \bf{NP} NP 集) :如果 n n n 非素数,则它有一个(多项式时间内) 可判定答案(即其非平凡因子)正确性的方法。1974 年,Pratt 证明了这个问题也属于 N P \bf{NP} NP 类 [Pra](即该问题属于 N P ∩ co- NP \bf NP\cap\text{co-\bf NP} NP ∩ co- NP )。
在 1975 年,Miller [Mil] 使用了基于费马小定理的一个性质,使得在假设扩展黎曼猜想(Extended Riemann Hypothesis, ERH)成立的前提下,给出了多项式时间复杂度内的素性检测算法。不久之后,它的算法被 Rabin [Rab] 改进为无条件、但随机化的多项式时间复杂度算法。同时,Solovay 和 Strassen [SS] 在 1974 年给出一个不同的随机多项式时间算法,它使用了这样的性质:对于素数 n n n ,( a n ) ≡ a n − 1 2 ( m o d n ) \left(\frac an\right)\equiv a^{\frac{n-1}2}\pmod n ( n a ) ≡ a 2 n − 1 ( mod n ) 对于任意 a a a 成立(其中 ( ) \left(\frac\ \ \right) ( ) 是雅可比符号)。它们的算法在 ERH 成立的情形下依然是确定性的。从此,一系列基于许多不同性质的随机化的多项式时间复杂度的算法被提出。
扩展黎曼猜想
设 K K K 为数域,O k \mathcal O_k O k 为 K K K 的整数环,a a a 为 O k \mathcal O_k O k 的一个理想,N a N_a N a 为非零理想的绝对范数,K K K 上的戴德金 ζ \zeta ζ 函数
ζ K ( s ) = ∑ a 1 ( N a ) s \zeta_K(s)=\sum_a\frac1{(N_a)^s} ζ K ( s ) = a ∑ ( N a ) s 1
其中 s s s 为实部大于 1 1 1 的所有复数,求和运算对所有非零理想 a a a 进行,猜想 ζ K ( s ) \zeta_K(s) ζ K ( s ) 的所有非平凡零点的实部都为 1 2 \dfrac12 2 1 。
当数域 K K K 取 Q \mathbb Q Q ,O k \mathcal O_k O k 取 Z \mathbb Z Z 时记为黎曼猜想。
雅可比符号
整数 a , m a,m a , m 互素,m m m 的因式分解式为 m = p 1 p 2 ⋯ p r m=p_1p_2\cdots p_r m = p 1 p 2 ⋯ p r ,则定义
( a m ) = ( a p 1 ) ( a p 2 ) ⋯ ( a p r ) \left(\frac am\right)=\left(\frac a{p_1}\right)\left(\frac a{p_2}\right)\cdots\left(\frac a{p_r}\right) ( m a ) = ( p 1 a ) ( p 2 a ) ⋯ ( p r a )
其中 ( a p i ) \left(\dfrac a{p_i}\right) ( p i a ) 是勒让德符号:
( a p ) = { 0 , a ≡ 0 ( m o d p ) 1 , a ≢ 0 ( m o d p ) ∧ ∃ x ∈ Z , x 2 ≡ a ( m o d p ) − 1 , ¬ ( ∃ x ∈ Z , x 2 ≡ a ( m o d p ) ) \left(\frac ap\right)=\begin{cases}
0,&a\equiv0\pmod p\\
1,&a\not\equiv0\pmod p\wedge \exists x\in\mathbb Z, x^2\equiv a\pmod p\\
-1,&\neg(\exists x\in\mathbb Z,x^2\equiv a\pmod p)\\
\end{cases} ( p a ) = ⎩ ⎨ ⎧ 0 , 1 , − 1 , a ≡ 0 ( mod p ) a ≡ 0 ( mod p ) ∧ ∃ x ∈ Z , x 2 ≡ a ( mod p ) ¬ ( ∃ x ∈ Z , x 2 ≡ a ( mod p ))
1983 年,Adleman, Pomerance 和 Rumely 实现了一个重大突破:他们给出了一个确定性的素性检测算法,且只需要 ( log n ) O ( log log log n ) (\log n)^{O(\log\log\log n)} ( log n ) O ( l o g l o g l o g n ) 的时间(此前的所有确定性算法都需要指数级时间完成)。他们的算法(一定程度上)是 Miller 思路的推广,并使用了更高次的互反律。1986 年,Goldwasser 和 Kilian [GK] 提出了一个基于椭圆曲线的、期望时间复杂度为多项式的随机化算法,它在几乎全部的输入(在某个猜想下成立的全部 输入)下提供了一种简单的素数判定方法(之前的所有随机算法只提供合数判定。)基于他们的想法,Atkin [Atk]提出了一个类似的算法。Adleman 和 Huang [AH] 改进了 Goldwasser-Kilian 算法,使之成为一个可接受所有输入,并在多项式时间复杂度内完成的随机化算法。
这条研究主线的终极目标就是找到一个无条件的、确定性的多项式时间复杂度的素性测试算法。不论之前的研究进展多么令人印象深刻,这个目标仍然难以企及。但在这篇论文中,我们实现了它。我们给出了一个确定性的,时间复杂度为 O ~ ( log 15 2 n ) \tilde O(\log^\frac{15}2 n) O ~ ( log 2 15 n ) 的素性检测算法。启发式地,我们的算法可以做到更好:基于索菲·热尔曼素数(指素数 p p p 满足 2 p + 1 2p+1 2 p + 1 也是素数)的一个普遍认同的猜想,这个算法只需要 O ~ ( log 6 n ) \tilde O(\log^6 n) O ~ ( log 6 n ) 的时间。我们的算法基于费马小定理在有限域上多项式环上的推广。特别地,我们算法正确性的证明只需要代数上非常简单的工具(除了一个筛法理论上关于素数密度的结果:对于素数 p p p ,p − 1 p-1 p − 1 会存在一个较大的素因子;但在不需要这个结果时也可将算法的时间复杂度控制在 O ~ ( log 21 2 n ) \tilde O(\log^\frac{21}2 n) O ~ ( log 2 21 n ) 内)。相比来看,之前的素数判定方法 [APR] [GK] [Atk] 显得过于复杂。
Õ 记号的含义
O ~ ( g ( n ) ) \tilde O(g(n)) O ~ ( g ( n )) 指 O ( g ( n ) log k ( n ) ) , ∀ k ∈ N O(g(n)\log^k(n)),\forall k\in\mathbb N O ( g ( n ) log k ( n )) , ∀ k ∈ N 。第 3 节中给出了严格的定义。
在第 2 节中,我们总结了算法背后的基本思路。在第 3 节中,我们修正了使用的记号。在第 4 节中,我们给出了算法及其正确性证明。在第 5 节中,我们给出了算法运行时间的(渐进的) 界。在第 6 节中,我们给出了一些优化算法时间复杂度的方法。
2. 思路
我们的测试方法基于以下关于素数的恒等式,它是费马小定理的推广。这个等式也是 [AB] 中的随机化算法的基础:
引理 2.1 令 a ∈ Z , n ∈ N , n ⩾ 2 a\in\mathbb Z, n\in\mathbb N, n\geqslant 2 a ∈ Z , n ∈ N , n ⩾ 2 ,且 ( a , n ) = 1 (a,n)=1 ( a , n ) = 1 。则 n n n 是一个素数当且仅当:
( X + a ) n ≡ X n + a ( m o d n ) (1) \tag{1}(X+a)^n\equiv X^n+a\pmod n ( X + a ) n ≡ X n + a ( mod n ) ( 1 )
(此处指左右两个多项式的每一项系数关于 n n n 同余;或者说对于 ∀ X \forall X ∀ X 同余式总成立。)
证明 :当 0 < i < n 0<i<n 0 < i < n 时,( ( X + a ) n − ( X n + a ) ) ((X+a)^n-(X^n+a)) (( X + a ) n − ( X n + a )) 中 X i X^i X i 项的系数为 ( n i ) a n − i \binom nia^{n-i} ( i n ) a n − i (二项式定理) 。
假设 n n n 是素数。则 ( n i ) ≡ 0 ( m o d n ) \binom ni\equiv0\pmod n ( i n ) ≡ 0 ( mod n ) 且多项式所有的系数皆为 0 0 0 。
解释
这是因为:
引理 2.1.1 ∀ a , b ∈ Z \forall a,b\in\mathbb Z ∀ a , b ∈ Z ,a a a 是 b b b 的整倍数,若 b ≡ 1 ( m o d p ) b\equiv1\pmod p b ≡ 1 ( mod p ) ,则a b ≡ a ( m o d p ) \dfrac ab\equiv a\pmod p b a ≡ a ( mod p ) 。
证明 :设 a = t b , b = s p + 1 a=tb,\ b=sp+1 a = t b , b = s p + 1 。则 a b ≡ t ≡ t s p + t ≡ a ( m o d p ) \dfrac ab\equiv t\equiv tsp+t\equiv a\pmod p b a ≡ t ≡ t s p + t ≡ a ( mod p ) 。
引理 2.1.2 ∀ a , b ∈ Z \forall a,b\in\mathbb Z ∀ a , b ∈ Z ,a a a 是 b b b 的整倍数,p p p 是素数且 ( p , b ) = 1 (p,b)=1 ( p , b ) = 1 ,则 a b ≡ a b p − 2 ( m o d p ) \dfrac ab\equiv ab^{p-2}\pmod p b a ≡ a b p − 2 ( mod p ) 。
证明 :由费马小定理得 b p − 1 ≡ 1 ( m o d p ) b^{p-1}\equiv1\pmod p b p − 1 ≡ 1 ( mod p ) 。故 a b = a b p − 2 b p − 1 \dfrac ab=\dfrac{ab^{p-2}}{b^{p-1}} b a = b p − 1 a b p − 2 。由 引理 2.1.2 得 a b p − 2 b p − 1 ≡ a b p − 2 ( m o d p ) \dfrac{ab^{p-2}}{b^{p-1}}\equiv ab^{p-2}\pmod p b p − 1 a b p − 2 ≡ a b p − 2 ( mod p ) 。
则由引理 2.1.2 得 ( n i ) mod n = n ( n − 1 ) ⋯ ( n − i + 1 ) i ! mod n = n ( n − 1 ) ⋯ ( n − i + 1 ) ⋅ ( i ! ) n − 2 mod n = 0 \displaystyle\binom ni\operatorname{mod}n=\frac{n(n-1)\cdots(n-i+1)}{i!}\operatorname{mod}n=n(n-1)\cdots(n-i+1)\cdot(i!)^{n-2}\operatorname{mod}n=0 ( i n ) mod n = i ! n ( n − 1 ) ⋯ ( n − i + 1 ) mod n = n ( n − 1 ) ⋯ ( n − i + 1 ) ⋅ ( i ! ) n − 2 mod n = 0 。
假设 n n n 是合数。考虑 n n n 的一个素因子 q q q 。取最大的整数 k k k 满足 q k ∣ n q^k\mid n q k ∣ n (原文使用 ∥ \parallel ∥ 记号(exact division symbol)) 。则 q k q^k q k 不整除 ( n q ) \binom nq ( q n ) ,且它 a n − q a^{n-q} a n − q 互素。因此 X q X^q X q 项的系数在模 n n n 的意义下非零。所以多项式 ( ( X + a ) n − ( X n + a ) ) ((X+a)^n-(X^n+a)) (( X + a ) n − ( X n + a )) 在 Z n \mathbb Z_n Z n 上不恒等于 0 0 0 。■ \blacksquare ■
解释
设 n = t q k n=tq^k n = t q k 其中 q ∤ t q\nmid t q ∤ t ,则 ( n q ) = n ( n − 1 ) ⋯ ( n − q + 1 ) q ! = t q k − 1 ( n − 1 ) ⋯ ( n − q + 1 ) ( q − 1 ) ! = t q k − 1 ( n − 1 q − 1 ) \displaystyle\binom nq=\frac{n(n-1)\cdots(n-q+1)}{q!}=tq^{k-1}\frac{(n-1)\cdots(n-q+1)}{(q-1)!}=tq^{k-1}\binom {n-1}{q-1} ( q n ) = q ! n ( n − 1 ) ⋯ ( n − q + 1 ) = t q k − 1 ( q − 1 )! ( n − 1 ) ⋯ ( n − q + 1 ) = t q k − 1 ( q − 1 n − 1 ) 。由 引理 2.1.2 知,( n − 1 q − 1 ) ≡ ( ( n − 1 ) ⋯ ( n − q + 1 ) ) ( ( q − 1 ) ! ) q − 2 ( m o d q ) \displaystyle\binom{n-1}{q-1}\equiv\big((n-1)\cdots(n-q+1)\big)\big((q-1)!\big)^{q-2}\pmod q ( q − 1 n − 1 ) ≡ ( ( n − 1 ) ⋯ ( n − q + 1 ) ) ( ( q − 1 )! ) q − 2 ( mod q ) ,而右侧两个因子都不整除于 q q q (前者不含 q q q 的整倍数,后者都小于 q q q )。所以 q ∤ ( n − 1 q − 1 ) \displaystyle q\nmid\binom{n-1}{q-1} q ∤ ( q − 1 n − 1 ) 。所以 q ∤ t ( n − 1 q − 1 ) q\nmid t\displaystyle\binom{n-1}{q-1} q ∤ t ( q − 1 n − 1 ) 。所以 q k ∤ ( n q ) q^k\nmid\displaystyle\binom nq q k ∤ ( q n ) 。
由于 a a a 和 n n n 互素,故 a a a 和 q k q^k q k 也互素。进而 a n − q a^{n-q} a n − q 和 q k q^k q k 也互素。
这里要证明多项式 ( ( X + a ) n − ( X n + a ) ) ((X+a)^n-(X^n+a)) (( X + a ) n − ( X n + a )) 的 X q X^q X q 项系数不整除于 n n n ,从而证明同余式不成立。已知这一项的系数为 ( n q ) a n − q \binom nqa^{n-q} ( q n ) a n − q ,刚刚证明了 ( n q ) \binom nq ( q n ) 不整除于 n n n ;又因为 n , a n,a n , a 互素,所以 a n − q a^{n-q} a n − q 也不整除于 n n n 。由于这两者互素,所以它们的乘积——即整个系数也不整除于 n n n 。
上述恒等式的证明引出了一个简单的素性测试方法:对于输入 n n n ,选择任意一个 a a a 并测试同余式 ( 1 ) (1) ( 1 ) 是否成立。但是这将消耗高达 Ω ( n ) \varOmega(n) Ω ( n ) 的时间,因为在最坏情况下我们需要求值左侧的 n n n 个系数。一个简单的减少系数求值的方法是,取一个合适的较小的 r r r ,并在 ( 1 ) (1) ( 1 ) 式左右两侧取关于 X r − 1 X^r-1 X r − 1 的模。换句话说,检查下式是否满足:
( X + a ) n ≡ X n + a ( m o d X r − 1 , n ) (2) \tag{2}(X+a)^n\equiv X^n+a\pmod{X^r-1,n} ( X + a ) n ≡ X n + a ( mod X r − 1 , n ) ( 2 )
上式含义的解释
这里 mod X r − 1 , n \operatorname{mod} X^r-1,n mod X r − 1 , n 的含义是这样的(在第 3 节中给出了严格的定义,这里只是形象的解释):
mod n \operatorname{mod} n mod n 是指对同余式两侧的多项式的每一个系数取关于 n n n 的模,两侧各得到一个多项式,但其次数不变;
mod X r − 1 \operatorname{mod} X^r-1 mod X r − 1 是指对同余式两侧的多项式做带余除法。比如左侧多项式为 f ( x ) f(x) f ( x ) ,则找到 ∂ ( r ( x ) ) < ∂ ( f ( x ) ) \partial(r(x))<\partial(f(x)) ∂ ( r ( x )) < ∂ ( f ( x )) 满足 f ( x ) = p ( x ) g ( x ) + r ( x ) f(x)=p(x)g(x)+r(x) f ( x ) = p ( x ) g ( x ) + r ( x ) ,r ( x ) r(x) r ( x ) 即为左侧的“余数”。对右侧做一样的操作,如果两侧带余除法得到的 r ( x ) r(x) r ( x ) 相同,则同余式成立。
可以验证,带余除法的“除数”为 X r − 1 X^r-1 X r − 1 时,实际上是简单地将 a i X i a_iX^i a i X i 这一项运算到 a i X i mod r a_iX^{i\operatorname{mod}r} a i X i mod r ,也就是在指数层面上做模运算,消除了大于等于 r r r 的项。运算完成后,对于 ∀ 0 ⩽ i < r \forall 0\leqslant i<r ∀0 ⩽ i < r ,X i X^i X i 项的系数即为 ∑ j ≡ i ( m o d r ) a j \displaystyle\sum_{j\equiv i\pmod r}a_j j ≡ i ( mod r ) ∑ a j 。
求和运算不影响模运算的结果。所以后文说,由 ( 1 ) (1) ( 1 ) 式可以推出对于任意的 r r r ,( 2 ) (2) ( 2 ) 式都成立。
由引理 2.1 ,可以显然得出对于任意素数 n n n ,任意 a , r a,r a , r 的取值都可以满足 ( 2 ) (2) ( 2 ) 式。现在的问题是,对于一些合数 n n n ,某些特殊的 a a a 和 r r r 取值也可能满足 ( 2 ) (2) ( 2 ) 式。但是,我们几乎可以还原这一特性(指 ( 1 ) (1) ( 1 ) 式为充要条件) :我们指出对于恰当选择的 r r r ,如果 ( 2 ) (2) ( 2 ) 式对于一些 a a a 满足,则 n n n 必定为素数的幂。a a a 和 r r r 的取值数量都被 log n \log n log n 构成的多项式所限制。这样,我们得到了一个多项式时间复杂的的素性测试算法。
3. 记号与准备
类 P \bf P P 指图灵机可在多项式时间复杂度内求解的问题 [Lee];关于 N P \bf NP NP 、co- NP \text{co-\bf NP} co- NP 等类的定义可查阅 [Lee]。
Z n \mathbb Z_n Z n 指模 n n n 的整数环(剩余类环) ,F p \mathbb F_p F p 指有 p p p 个元素的有限域,其中 p p p 是素数。回忆这样的事实:如果 p p p 是素数,且 h ( X ) h(X) h ( X ) 是一个次数为 d d d 的多项式,并在域 F p \mathbb F_p F p 下不可约,则 F p [ X ] / ( h ( X ) ) \mathbb F_p[X]/(h(X)) F p [ X ] / ( h ( X )) 是 p d p^d p d 阶的有限域。我们用记号 f ( X ) ≡ g ( X ) ( m o d h ) ( X , n ) f(X)\equiv g(X)\pmod h(X, n) f ( X ) ≡ g ( X ) ( mod h ) ( X , n ) 来表示 f ( x ) = g ( x ) f(x)=g(x) f ( x ) = g ( x ) 在环 Z n [ X ] / ( h ( X ) ) \mathbb Z_n[X]/(h(X)) Z n [ X ] / ( h ( X )) 上成立。
补充说明
这里:
F [ X ] \mathbb F[X] F [ X ] 指多项式环,其中元素具有形式 a n X n + ⋯ + a 1 X 1 + a 0 a_nX^n+\cdots+a_1X_1+a_0 a n X n + ⋯ + a 1 X 1 + a 0 ,其中 a i ∈ F a_i\in\mathbb F a i ∈ F 。
有限域的阶就是其元素个数。
/ / / 是商环的记号。这里,商环的构造是由 h ( X ) h(X) h ( X ) 的同余关系导出的。
我们使用 O ~ ( t ( n ) ) \tilde O(t(n)) O ~ ( t ( n )) 记号表示 O ( t ( n ) ⋅ poly ( log t ( n ) ) ) O(t(n)\cdot\operatorname{poly}(\log t(n))) O ( t ( n ) ⋅ poly ( log t ( n ))) ,其中 t ( n ) t(n) t ( n ) 是任意关于 n n n 的函数。比如,O ~ ( log k n ) = O ( log k n ⋅ poly ( log log n ) ) = O ( log k + ε n ) \tilde O(\log^k n)=O(\log^kn\cdot\operatorname{poly}(\log\log n))=O(\log^{k+\varepsilon}n) O ~ ( log k n ) = O ( log k n ⋅ poly ( log log n )) = O ( log k + ε n ) 对任意 ε > 0 \varepsilon>0 ε > 0 成立。我们用 log \log log 表示以 2 2 2 为底的对数函数,用 ln \ln ln 表示自然对数函数。
补充说明
这里 poly ( f ( n ) ) \operatorname{poly}(f(n)) poly ( f ( n )) 指以 f ( n ) f(n) f ( n ) 为变元的多项式。
N \mathbb N N 和 Z \mathbb Z Z 分别表示自然数集和整数集。对于给定的 r ∈ N , a ∈ Z r\in\mathbb N,a\in\mathbb Z r ∈ N , a ∈ Z 满足 ( a , r ) = 1 (a,r)=1 ( a , r ) = 1 ,则称满足同余式 a k ≡ 1 ( m o d r ) a^k\equiv1\pmod r a k ≡ 1 ( mod r ) 最小的 k k k 为 a a a 模 r r r 的阶 ,记作 o r ( a ) \mathrm o_r(a) o r ( a ) 。对于任意 r ∈ N r\in\mathbb N r ∈ N ,欧拉函数 φ ( r ) \varphi(r) φ ( r ) 指比 r r r 小且与 r r r 互质的(正整) 数的个数。容易看出,o r ( a ) ∣ φ ( r ) \mathrm o_r(a)\mid\varphi(r) o r ( a ) ∣ φ ( r ) 对任意满足 ( a , r ) = 1 (a,r)=1 ( a , r ) = 1 的 a a a 成立。
“容易看出”的证明
引理 3.0.1 若 x ≡ 1 ( m o d r ) x\equiv1\pmod r x ≡ 1 ( mod r ) ,则对于 ∀ n ∈ N \forall n\in\mathbb N ∀ n ∈ N ,x n ≡ 1 ( m o d r ) x^n\equiv1\pmod r x n ≡ 1 ( mod r ) 。
证明 :设 x = p r + 1 x=pr+1 x = p r + 1 ,p ∈ Z p\in\mathbb Z p ∈ Z 。则
( p r + 1 ) n = ∑ i = 0 n ( n i ) ( p r ) i (pr+1)^n=\sum_{i=0}^n\binom ni(pr)^i ( p r + 1 ) n = i = 0 ∑ n ( i n ) ( p r ) i
对于 ∀ i > 0 \forall i>0 ∀ i > 0 ,显然 r ∣ ( p r ) i r\mid(pr)^i r ∣ ( p r ) i ,此时 ( n i ) ( p r ) i \binom ni(pr)^i ( i n ) ( p r ) i 这些项都整除 r r r 。当 i = 0 i=0 i = 0 时,( n i ) ( p r ) i = 1 \binom ni(pr)^i=1 ( i n ) ( p r ) i = 1 。所以 x n = ( p r + 1 ) n ≡ 1 ( m o d r ) x^n=(pr+1)^n\equiv1\pmod r x n = ( p r + 1 ) n ≡ 1 ( mod r ) 。
引理 3.0.2(费马-欧拉定理) a φ ( r ) ≡ 1 ( m o d r ) a^{\varphi(r)}\equiv1\pmod{r} a φ ( r ) ≡ 1 ( mod r ) 对任意满足 ( a , r ) = 1 (a,r)=1 ( a , r ) = 1 的 a a a 和 r r r 成立。
证明 :设 x 1 , x 2 , ⋯ , x φ ( r ) x_1,x_2,\cdots,x_{\varphi(r)} x 1 , x 2 , ⋯ , x φ ( r ) 为小于 r r r 的与 r r r 互素的正整数。考虑集合 { a x 1 , ⋯ , a x φ ( r ) } \{ax_1,\cdots, ax_{\varphi(r)}\} { a x 1 , ⋯ , a x φ ( r ) } ,其满足如下性质:
每个元素关于 r r r 的模互不相等。否则,∃ i , j \exists i,j ∃ i , j 使得 a x i ≡ a x j ( m o d r ) ax_i\equiv ax_j\pmod r a x i ≡ a x j ( mod r ) ,则 r ∣ ( a x i − a x j ) r\mid(ax_i-ax_j) r ∣ ( a x i − a x j ) ;另一方面由 a , r a,r a , r 互素、∣ x i − x j ∣ < r |x_i-x_j|<r ∣ x i − x j ∣ < r 得到 r ∤ a ( x i − x j ) r\nmid a(x_i-x_j) r ∤ a ( x i − x j ) ,矛盾。
( a x i mod r , r ) = 1 (ax_i\operatorname{mod}r,r)=1 ( a x i mod r , r ) = 1 对于 ∀ i \forall i ∀ i 成立。这可由最大公约数的积性得出:( a , r ) = 1 ∧ ( x i , r ) = 1 ⇒ ( a x i , r ) = 1 ⇒ ( a x i mod r , r ) = 1 (a,r)=1\wedge(x_i,r)=1\rArr(ax_i,r)=1\rArr(ax_i\operatorname{mod}r,r)=1 ( a , r ) = 1 ∧ ( x i , r ) = 1 ⇒ ( a x i , r ) = 1 ⇒ ( a x i mod r , r ) = 1 。
从而 { a x i mod r ∣ 1 ⩽ i ⩽ φ ( i ) } \{ax_i\operatorname{mod}r\mid 1\leqslant i\leqslant\varphi(i)\} { a x i mod r ∣ 1 ⩽ i ⩽ φ ( i )} 是小于 r r r 且与 r r r 互质的正整数。这和 { x 1 , x 2 , ⋯ , x φ ( r ) } \{x_1,x_2,\cdots,x_{\varphi(r)}\} { x 1 , x 2 , ⋯ , x φ ( r ) } 的定义相同,这两个集合相等。从而
a x 1 ⋅ a x 2 ⋯ a x φ ( r ) ≡ x 1 ⋅ x 2 ⋯ a x φ ( r ) ( m o d r ) ax_1\cdot ax_2\cdots ax_{\varphi(r)}\equiv x_1\cdot x_2\cdots ax_{\varphi(r)}\pmod r a x 1 ⋅ a x 2 ⋯ a x φ ( r ) ≡ x 1 ⋅ x 2 ⋯ a x φ ( r ) ( mod r )
显然 x 1 x 2 ⋯ x φ ( r ) x_1x_2\cdots x_{\varphi(r)} x 1 x 2 ⋯ x φ ( r ) 与 r r r 互素,可以消去,于是得到:
a φ ( r ) ≡ 1 ( m o d r ) a^{\varphi(r)}\equiv1\pmod r a φ ( r ) ≡ 1 ( mod r )
证明 :设 φ ( n ) = k o r ( a ) + p \varphi(n)=k\mathrm o_r(a)+p φ ( n ) = k o r ( a ) + p ,k ∈ Z , 1 < p < n k\in\mathbb Z,1<p<n k ∈ Z , 1 < p < n 。则 a φ ( n ) = ( a o r ( a ) ) k ⋅ a p a^{\varphi(n)}=(a^{\mathrm o_r(a)})^k\cdot a^p a φ ( n ) = ( a o r ( a ) ) k ⋅ a p 。即 a p = a φ n ( a o r ( a ) ) k a^p=\dfrac{a^{\varphi n}}{(a^{\mathrm o_r(a)})^k} a p = ( a o r ( a ) ) k a φ n 。由于 a o r ( a ) ≡ 1 ( m o d r ) a^{\mathrm o_r(a)}\equiv1\pmod r a o r ( a ) ≡ 1 ( mod r ) ,由引理 3.0.1 知 ( a o r ( a ) ) k ≡ 1 ( m o d r ) (a^{\mathrm o_r(a)})^k\equiv1\pmod r ( a o r ( a ) ) k ≡ 1 ( mod r ) 。再由引理 2.1.1 和引理3.0.2 知 a p ≡ a φ ( r ) ≡ 1 ( m o d r ) a^p\equiv a^{\varphi(r)}\equiv1\pmod r a p ≡ a φ ( r ) ≡ 1 ( mod r ) 。即 p < o r ( a ) p<\mathrm o_r(a) p < o r ( a ) 也满足 a p ≡ 1 ( m o d r ) a^p\equiv1\pmod r a p ≡ 1 ( mod r ) ,与 o r ( a ) \mathrm o_r(a) o r ( a ) 的定义矛盾。所以 p = 0 p=0 p = 0 ,o r ( a ) ∣ φ ( r ) \mathrm o_r(a)\mid\varphi(r) o r ( a ) ∣ φ ( r ) 。
我们需要知道以下关于前 m m m 个(正整) 数的最小公倍数的简单事实:
引理 3.1 记 LCM ( m ) \operatorname{LCM}(m) LCM ( m ) 为前 m m m 个(正整) 数的最小公倍数。当 m ⩾ 7 m\geqslant7 m ⩾ 7 时,
LCM ( m ) ⩾ 2 m \operatorname{LCM}(m)\geqslant 2^m LCM ( m ) ⩾ 2 m
引理 3.1 的证明
引理 3.1.1 函数
F ( m , n ) = ∑ i = 0 n − m ( − 1 ) i ( n − m i ) m + i (2.1) \tag{2.1}F(m,n)=\sum_{i=0}^{n-m}\frac{(-1)^i\binom{n-m}i}{m+i} F ( m , n ) = i = 0 ∑ n − m m + i ( − 1 ) i ( i n − m ) ( 2.1 )
在 m , n ∈ N , 1 ⩽ m ⩽ n m,n\in\mathbb N,1\leqslant m\leqslant n m , n ∈ N , 1 ⩽ m ⩽ n 上定义,则有恒等式
F ( m , n ) = { 1 m ( n m ) , m > 0 0 , m = 0 (2.2) \tag{2.2}F(m,n)=\begin{cases}\dfrac1{m\binom nm},&m>0\\0,&m=0\end{cases} F ( m , n ) = ⎩ ⎨ ⎧ m ( m n ) 1 , 0 , m > 0 m = 0 ( 2.2 )
证明 :用数学归纳法对 n − m n-m n − m 做归纳。
当 n − m = 0 n-m=0 n − m = 0 时,F ( m , n ) = 0 F(m,n)=0 F ( m , n ) = 0 是显然的。
假设 n − m = r n-m=r n − m = r 时引理成立。考虑 n − m = r + 1 n-m=r+1 n − m = r + 1 的情形:
F ( m , n ) = F ( m , m + r + 1 ) = ∑ i = 0 r + 1 ( − 1 ) i ( r + 1 i ) m + i = ∑ i = 0 r + 1 ( − 1 ) i ( ( r i ) + ( r i − 1 ) ) m + i = ∑ i = 0 r + 1 ( − 1 ) i ( r i ) m + i + ∑ i = 0 r + 1 ( − 1 ) i ( r i − 1 ) m + i = ∑ i = 0 r ( − 1 ) i ( r i ) m + i + ∑ i = 1 r ( − 1 ) i ( r i − 1 ) m + i = ∑ i = 0 r ( − 1 ) i ( r i ) m + i − ∑ i = 0 r ( − 1 ) i ( r i ) m + i + 1 = F ( m , m + r ) − F ( m + 1 , m + 1 + r ) = 1 m ( m + r m ) − 1 ( m + 1 ) ( m + r + 1 m + 1 ) = m ! m ⋅ ( m + r ) ⋯ ( r + 1 ) − ( m + 1 ) ! ( m + 1 ) ⋅ ( m + r + 1 ) ⋯ ( r + 1 ) = ( m + 1 ) ! ( r + 1 ) m ( m + 1 ) ⋅ ( m + r + 1 ) ⋯ ( r + 1 ) = m ! m ⋅ ( m + r + 1 ) ⋯ ( r + 2 ) = 1 m ( m + r + 1 m ) \begin{aligned}
F(m,n)&=F(m,m+r+1)\\
&=\sum_{i=0}^{r+1}\frac{(-1)^i\binom{r+1}i}{m+i}\\
&=\sum_{i=0}^{r+1}\frac{(-1)^i\left(\binom ri+\binom r {i-1}\right)}{m+i}\\
&=\sum_{i=0}^{r+1}\frac{(-1)^i\binom ri}{m+i}+\sum_{i=0}^{r+1}\frac{(-1)^i\binom r{i-1}}{m+i}\\
&=\sum_{i=0}^r\frac{(-1)^i\binom ri}{m+i}+\sum_{i=1}^r\frac{(-1)^i\binom r{i-1}}{m+i}\\
&=\sum_{i=0}^r\frac{(-1)^i\binom ri}{m+i}-\sum_{i=0}^r\frac{(-1)^i\binom ri}{m+i+1}\\
&=F(m,m+r)-F(m+1,m+1+r)\\
&=\frac1{m\binom{m+r}m}-\frac1{(m+1)\binom{m+r+1}{m+1}}\\
&=\frac{m!}{m\cdot(m+r)\cdots(r+1)}-\frac{(m+1)!}{(m+1)\cdot(m+r+1)\cdots(r+1)}\\
&=\frac{(m+1)!(r+1)}{m(m+1)\cdot(m+r+1)\cdots(r+1)}\\
&=\frac{m!}{m\cdot(m+r+1)\cdots(r+2)}\\
&=\frac1{m\binom{m+r+1}{m}}
\end{aligned} F ( m , n ) = F ( m , m + r + 1 ) = i = 0 ∑ r + 1 m + i ( − 1 ) i ( i r + 1 ) = i = 0 ∑ r + 1 m + i ( − 1 ) i ( ( i r ) + ( i − 1 r ) ) = i = 0 ∑ r + 1 m + i ( − 1 ) i ( i r ) + i = 0 ∑ r + 1 m + i ( − 1 ) i ( i − 1 r ) = i = 0 ∑ r m + i ( − 1 ) i ( i r ) + i = 1 ∑ r m + i ( − 1 ) i ( i − 1 r ) = i = 0 ∑ r m + i ( − 1 ) i ( i r ) − i = 0 ∑ r m + i + 1 ( − 1 ) i ( i r ) = F ( m , m + r ) − F ( m + 1 , m + 1 + r ) = m ( m m + r ) 1 − ( m + 1 ) ( m + 1 m + r + 1 ) 1 = m ⋅ ( m + r ) ⋯ ( r + 1 ) m ! − ( m + 1 ) ⋅ ( m + r + 1 ) ⋯ ( r + 1 ) ( m + 1 )! = m ( m + 1 ) ⋅ ( m + r + 1 ) ⋯ ( r + 1 ) ( m + 1 )! ( r + 1 ) = m ⋅ ( m + r + 1 ) ⋯ ( r + 2 ) m ! = m ( m m + r + 1 ) 1
这就证明了等式 ( 2.2 ) (2.2) ( 2.2 ) 的正确性。
证明 :注意到引理 3.1.1 的式 ( 2.1 ) (2.1) ( 2.1 ) 右侧分母只有 m , ( m + 1 ) , ⋯ , n m,(m+1),\cdots,n m , ( m + 1 ) , ⋯ , n ,所以约分之后 F ( m , n ) F(m,n) F ( m , n ) 的最简形式分母也只能是 { m , ( m + 1 ) , ⋯ , n } \{m,(m+1),\cdots,n\} { m , ( m + 1 ) , ⋯ , n } 的子集的积。所以它必然整除 LCM ( n ) \operatorname{LCM}(n) LCM ( n ) 。运用式 ( 2.2 ) (2.2) ( 2.2 ) 即得:
m ( n m ) | LCM ( n ) \left.m\binom nm\middle|\operatorname{LCM}(n)\right. m ( m n ) LCM ( n )
由于 LCM ( 2 n ) ∣ LCM ( 2 n + 1 ) \operatorname{LCM}(2n)\mid\operatorname{LCM}(2n+1) LCM ( 2 n ) ∣ LCM ( 2 n + 1 ) ,故有
n ( 2 n n ) | LCM ( 2 n + 1 ) (2.3) \tag{2.3}\left.n\binom{2n}n\middle|\operatorname{LCM}(2n+1)\right. n ( n 2 n ) LCM ( 2 n + 1 ) ( 2.3 )
又因为 ( 2 n + 1 ) ( 2 n n ) = ( n + 1 ) ( 2 n + 1 n + 1 ) \displaystyle(2n+1)\binom{2n}n=(n+1)\binom{2n+1}{n+1} ( 2 n + 1 ) ( n 2 n ) = ( n + 1 ) ( n + 1 2 n + 1 ) ,又有
( 2 n + 1 ) ( 2 n n ) | LCM ( 2 n + 1 ) (2.4) \tag{2.4}\left.(2n+1)\binom{2n}n\middle|\operatorname{LCM}(2n+1)\right. ( 2 n + 1 ) ( n 2 n ) LCM ( 2 n + 1 ) ( 2.4 )
式 ( 2.3 ) ( 2.4 ) (2.3)\ (2.4) ( 2.3 ) ( 2.4 ) 中 ( n , 2 n + 1 ) = 1 (n,2n+1)=1 ( n , 2 n + 1 ) = 1 ,所以
n ( 2 n + 1 ) ( 2 n n ) | LCM ( 2 n + 1 ) \left.n(2n+1)\binom{2n}n\middle|\operatorname{LCM}(2n+1)\right. n ( 2 n + 1 ) ( n 2 n ) LCM ( 2 n + 1 )
考虑 ( 1 + x ) 2 n (1+x)^{2n} ( 1 + x ) 2 n 的二项式展开中,( 2 n n ) \binom{2n}n ( n 2 n ) 是最大的系数,故有不等式:
( 1 + x ) 2 n = ∑ i = 0 2 n ( 2 n i ) x i ⩽ ∑ i = 0 2 n ( 2 n n ) x i (1+x)^{2n}=\sum_{i=0}^{2n}\binom{2n}ix^i\leqslant\sum_{i=0}^{2n}\binom{2n}nx^i ( 1 + x ) 2 n = i = 0 ∑ 2 n ( i 2 n ) x i ⩽ i = 0 ∑ 2 n ( n 2 n ) x i
两侧带入 x = 1 x=1 x = 1 ,得到:
2 2 n ⩽ ( 2 n + 1 ) ⋅ ( 2 n n ) ⋅ 1 2^{2n}\leqslant(2n+1)\cdot\binom{2n}n\cdot1 2 2 n ⩽ ( 2 n + 1 ) ⋅ ( n 2 n ) ⋅ 1
当 n ⩾ 4 n\geqslant4 n ⩾ 4 时,
n ( 2 n + 1 ) ( 2 n n ) ⩾ n ⋅ 2 2 n ⩾ 2 2 n + 2 n(2n+1)\binom{2n}n\geqslant n\cdot2^{2n}\geqslant 2^{2n+2} n ( 2 n + 1 ) ( n 2 n ) ⩾ n ⋅ 2 2 n ⩾ 2 2 n + 2
由于左侧整除 LCM ( 2 n + 1 ) \operatorname{LCM}(2n+1) LCM ( 2 n + 1 ) ,所以 n ⩾ 4 n\geqslant4 n ⩾ 4 时
LCM ( 2 n + 2 ) ⩾ LCM ( 2 n + 1 ) ⩾ n ( 2 n + 1 ) ( 2 n n ) ⩾ 2 2 n + 2 \operatorname{LCM}(2n+2)\geqslant\operatorname{LCM}(2n+1)\geqslant n(2n+1)\binom{2n}n\geqslant 2^{2n+2} LCM ( 2 n + 2 ) ⩾ LCM ( 2 n + 1 ) ⩾ n ( 2 n + 1 ) ( n 2 n ) ⩾ 2 2 n + 2
即 m ⩾ 10 m\geqslant10 m ⩾ 10 时,LCM ( m ) ⩾ 2 m \operatorname{LCM}(m)\geqslant 2^m LCM ( m ) ⩾ 2 m 。可单独验证 m = 7 , 8 , 9 m=7,8,9 m = 7 , 8 , 9 时不等式依然成立。
4. 算法及其正确性
Algorithm 1 AKS 素性检测
1: procedure AksPrimalityTesting (n n n )
2: if 存在 a ∈ N , b > 1 a\in\mathbb N, b>1 a ∈ N , b > 1 , s.t. n = a b n=a^b n = a b then
3: return C O M P O S I T E \tt COMPOSITE COMPOSITE
4: r r r ← \larr ← 满足 o r ( n ) > log 2 n \mathrm o_r(n)>\log^2n o r ( n ) > log 2 n 的最小的 r r r
5: if 存在 a ⩽ r a\leqslant r a ⩽ r , s.t. 1 < ( a , n ) < n 1<(a,n)< n 1 < ( a , n ) < n then
6: return C O M P O S I T E \tt COMPOSITE COMPOSITE
7: if n ⩽ r n\leqslant r n ⩽ r then
8: return P R I M E \tt PRIME PRIME
9: for a ← 1 a \larr 1 a ← 1 to ⌊ φ ( r ) log n ⌋ \lfloor\sqrt{\varphi(r)}\log n\rfloor ⌊ φ ( r ) log n ⌋ do
10: if ( X + a ) n ≢ X n + a ( m o d X r − 1 , n ) (X+a)^n\not\equiv X^n+a\pmod{X^r-1,n} ( X + a ) n ≡ X n + a ( mod X r − 1 , n ) then
11: return C O M P O S I T E \tt COMPOSITE COMPOSITE
12: return P R I M E \tt PRIME PRIME
悬浮显示
(此处的伪代码做了排版上的调整,后文将使用行号而非原文的步骤序号来描述。)
定理 4.1 算法 1 返回 P R I M E \tt PRIME PRIME 当且仅当 n n n 是素数。
在本节的余下部分,我们将通过一系列引理来证明这个定理。
引理 4.2 如果 n n n 是素数,则算法 1 返回 P R I M E \tt PRIME PRIME 。
证明 :如果 n n n 是素数,则行 2 和行 5 条件不会被满足,故前 6 行不会返回 C O M P O S I T E \tt COMPOSITE COMPOSITE 。根据引理 2.1 ,行 10 的条件也不会满足,故 11 行返回 C O M P O S I T E \tt COMPOSITE COMPOSITE 也不会执行。所以,算法必然会在行 8 或者行 12 返回 P R I M E \tt PRIME PRIME 。
解释
行 2 条件不满足的原因很明显:素数不可能是某个因子的高次幂。行 5 条件不满足的原因是,素数 n n n 和任意比它小的数 a a a 都互素,所以 ( a , n ) = 1 (a,n)=1 ( a , n ) = 1 恒成立,条件不满足。
行 10 的条件就是引理 2.1 的否。当 n n n 是素数时,同余式总是相等的。
但上述引理的逆命题的证明需要花费一些力气。如果算法在行 8 返回 P R I M E \tt PRIME PRIME ,那么 n n n 必然是素数。否则,一个合数在行 5 处就能找到一个非平凡因子。所以唯一剩下的情形就是算法在行 12 返回 P R I M E \tt PRIME PRIME 。为了便于后续分析,我们只讨论这一种情形。
解释
这里反设法假设:n n n 是合数,但算法执行到了行 8,也就是行 7 条件 n ⩽ r n\leqslant r n ⩽ r 成立。那么,在行 5 的条件判断中,对于 n n n 的任意一个非平凡因子 a a a ,( a , n ) = a (a,n)=a ( a , n ) = a 满足 1 < ( a , n ) < n ⩽ r 1<(a,n)<n\leqslant r 1 < ( a , n ) < n ⩽ r 的条件,所以算法只会执行到行 6。于是推出矛盾,得到结论:如果算法在行 8 返回 P R I M E \tt PRIME PRIME ,那么 n n n 必是素数。
整个算法分为两个大步骤:行 4 找到合适的 r r r ,以及行 9 到行 11 对 ( 2 ) (2) ( 2 ) 式带入一系列 a a a 的值后的验证。我们先把目光放在找到合适 r r r 这一步。
引理 4.3 存在 r ⩽ max { 3 , ⌈ log 5 n ⌉ } r\leqslant\max\{3,\lceil\log^5n\rceil\} r ⩽ max { 3 , ⌈ log 5 n ⌉} 使得 o r ( n ) > log 2 n \mathrm o_r(n)>\log^2n o r ( n ) > log 2 n 。
(原文的证明被认为是错误的。以下证明取自 Errata: PRIMES is in P 。)
证明 :当 n = 2 n=2 n = 2 时证明是平凡的,只需取 r = 3 r=3 r = 3 即可使命题满足。下假设 n > 2 n>2 n > 2 ,此时 ⌈ log 5 n ⌉ > 10 \lceil\log^5n\rceil>10 ⌈ log 5 n ⌉ > 10 从而可以使用引理 3.1 。观察到满足 m k ⩽ B = ⌈ log 5 n ⌉ , m ⩾ 2 m^k\leqslant B=\lceil\log^5n\rceil\ ,m\geqslant2 m k ⩽ B = ⌈ log 5 n ⌉ , m ⩾ 2 的最大的 k k k 为 ⌊ log B ⌋ \lfloor\log B\rfloor ⌊ log B ⌋ 。先考虑令 s s s 为最小的不整除
n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) n^{\lfloor\log B\rfloor}\cdot\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1) n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 )
的正整数。那么 s s s 有多小呢?注意到:
n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) < n ⌊ log B ⌋ + 1 2 log 2 n ⋅ ( log 2 n + 1 ) ⩽ n log 4 n ⩽ 2 log 5 n ⩽ 2 B n^{\lfloor\log B\rfloor}\cdot\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1)<n^{\lfloor\log B\rfloor+\frac12\log^2n\cdot(\log^2n+1)}\leqslant n^{\log^4n}\leqslant2^{\log^5n}\leqslant2^B n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 ) < n ⌊ l o g B ⌋ + 2 1 l o g 2 n ⋅ ( l o g 2 n + 1 ) ⩽ n l o g 4 n ⩽ 2 l o g 5 n ⩽ 2 B
不等式的细节
第一个不等式的细节:
n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) < n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ n i = n ⌊ log B ⌋ + ∑ i = 1 ⌊ log 2 n ⌋ i ⩽ n ⌊ log B ⌋ + 1 2 ⌊ log 2 n ⌋ ⋅ ( ⌊ log 2 n ⌋ + 1 ) \begin{aligned}
&n^{\lfloor\log B\rfloor}\cdot\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1)\\
<&n^{\lfloor\log B\rfloor}\cdot\prod_{i=1}^{\lfloor\log^2n\rfloor}n^i\\
=&n^{\lfloor\log B\rfloor+\sum_{i=1}^{\lfloor\log^2n\rfloor}i}\\
\leqslant&n^{\lfloor\log B\rfloor+\frac12\lfloor\log^2n\rfloor\cdot(\lfloor\log^2n\rfloor+1)}\\
\end{aligned} < = ⩽ n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 ) n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ n i n ⌊ l o g B ⌋ + ∑ i = 1 ⌊ l o g 2 n ⌋ i n ⌊ l o g B ⌋ + 2 1 ⌊ l o g 2 n ⌋ ⋅ (⌊ l o g 2 n ⌋ + 1 )
第二个不等式的细节:
x 4 > ⌊ log ( ⌈ x 5 ⌉ ) ⌋ + 1 2 ⌊ x 2 ⌋ ( ⌊ x 2 ⌋ + 1 ) x^4>\lfloor\log(\lceil x^5\rceil)\rfloor+\frac12\lfloor x^2\rfloor(\lfloor x^2\rfloor+1) x 4 > ⌊ log (⌈ x 5 ⌉)⌋ + 2 1 ⌊ x 2 ⌋ (⌊ x 2 ⌋ + 1 )
上式在 n ⩾ 4 n\geqslant4 n ⩾ 4 时成立,而 n = 2 , 3 n=2,3 n = 2 , 3 的情形也可验证原式成立。
第三个不等式是显然的。第四个不等式是取整符号的性质。
(第二个不等式对于任意 n ⩾ 2 n\geqslant2 n ⩾ 2 成立。)由引理 3.1 ,前 B B B 个正整数的最小公倍数最少为 2 B 2^B 2 B 。于是,s ⩽ B s\leqslant B s ⩽ B 。所以结果是,s s s 中与 n n n 互素的因子为 s ( s , n ⌊ log B ⌋ ) \dfrac{s}{(s,n^{\lfloor\log B\rfloor})} ( s , n ⌊ l o g B ⌋ ) s ,记其为 r r r 。更进一步,根据 s s s 的选择我们已经有 r r r 不整除
∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) \prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1) i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 )
解释
s ⩽ B s\leqslant B s ⩽ B 的解释:这里使用反证法:否则 s > B s>B s > B ,则由 s s s 的定义,小于 s s s 的所有正整数皆整除 n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) \displaystyle n^{\lfloor\log B\rfloor}\cdot\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1) n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 ) 。所以它们的最小公倍数也有 LCM ( s ) | n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) \left.\operatorname{LCM}(s)\middle|\displaystyle n^{\lfloor\log B\rfloor}\cdot\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1)\right. LCM ( s ) n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 ) ,即 LCM ( s ) ⩽ n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) < 2 B \operatorname{LCM}(s)\leqslant\displaystyle n^{\lfloor\log B\rfloor}\cdot\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1)<2^B LCM ( s ) ⩽ n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 ) < 2 B 。这与引理 3.1 矛盾。
“s s s 中与 n n n 互素的因子”的解释:这里形象地讲,求 s s s 中与 n n n 互素的因子是将 n n n 的因子全部从 s s s 中除去。而证明最初提到的 k ⩽ ⌊ log B ⌋ k\leqslant\lfloor\log B\rfloor k ⩽ ⌊ log B ⌋ 以及现在 s ⩽ B s\leqslant B s ⩽ B 限制了 n n n 的因子重复的个数最多不超过 ⌊ log B ⌋ \lfloor\log B\rfloor ⌊ log B ⌋ 个。所以 s s s 中和 n n n 相同因子的部分为 ( s , n ⌊ log B ⌋ ) (s,n^{\lfloor\log B\rfloor}) ( s , n ⌊ l o g B ⌋ ) ,用 s s s 除以它即得到 s s s 中互素的部分。
“r r r 不整除”的解释:反设 r ∣ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) r\mid\displaystyle\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1) r ∣ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 ) ,则 r ∣ n ⌊ log B ⌋ ⋅ ∏ i = 1 ⌊ log 2 n ⌋ ( n i − 1 ) r\mid n^{\lfloor\log B\rfloor}\cdot\displaystyle\prod_{i=1}^{\lfloor\log^2n\rfloor}(n^i-1) r ∣ n ⌊ l o g B ⌋ ⋅ i = 1 ∏ ⌊ l o g 2 n ⌋ ( n i − 1 ) 。由于 r , n ⌊ log B ⌋ r,n^{\lfloor\log B\rfloor} r , n ⌊ l o g B ⌋ 互素,且后者也整除这个数,所以 r n ⌊ log B ⌋ rn^{\lfloor\log B\rfloor} r n ⌊ l o g B ⌋ 也整除这个数。但 s s s 是 r n ⌊ log B ⌋ rn^{\lfloor\log B\rfloor} r n ⌊ l o g B ⌋ 的因子,这与 s s s 不整除矛盾。
于是(与 n n n 互素的)r r r 也不整除任意 n i − 1 n^i-1 n i − 1 ,其中 1 ⩽ i ⩽ ⌊ log 2 n ⌋ 1\leqslant i\leqslant\lfloor\log^2n\rfloor 1 ⩽ i ⩽ ⌊ log 2 n ⌋ ,表明 o r ( n ) > log 2 n \mathrm o_r(n)>\log^2n o r ( n ) > log 2 n 。■ \blacksquare ■
引理 4.3 表明 r ⩽ ⌈ log 5 n ⌉ r\leqslant\lceil\log^5 n\rceil r ⩽ ⌈ log 5 n ⌉ ,所以行 7 的判断只在 n ⩽ 5690034 n\leqslant5690034 n ⩽ 5690034 时必须。
解释
上面证明了 n i ≢ 1 ( m o d r ) n^i\not\equiv1\pmod r n i ≡ 1 ( mod r ) 对于任意 1 ⩽ i ⩽ ⌊ log 2 n ⌋ 1\leqslant i\leqslant\lfloor\log^2n\rfloor 1 ⩽ i ⩽ ⌊ log 2 n ⌋ 都成立。根据 o r ( n ) \mathrm o_r(n) o r ( n ) 的定义,则 o r ( n ) \mathrm o_r(n) o r ( n ) 必然大于 log 2 n \log^2n log 2 n 。
因为 o r ( n ) > 1 \mathrm o_r(n)>1 o r ( n ) > 1 ,则必然存在 n n n 的素因子 p p p 使得 o r ( p ) > 1 \mathrm o_r(p)>1 o r ( p ) > 1 。现在,假定 p > r p>r p > r (否则算法在行 8 及之前就能够判断 n n n 的素性)。因为 ( n , r ) = 1 (n,r)=1 ( n , r ) = 1 (否则算法在行 8 及之前就能正确地判断 n n n 的素性),p , n ∈ Z r ∗ p,n\in\mathbb Z^*_r p , n ∈ Z r ∗ ,数 p p p 和 r r r 的值将在这一节余下的部分为定值。此时,令 l = ⌊ φ ( r ) log n ⌋ l=\lfloor\sqrt{\varphi(r)}\log n\rfloor l = ⌊ φ ( r ) log n ⌋ 。
ℤ* 记号的含义
Z r ∗ \mathbb Z^*_r Z r ∗ 表示 Z r \mathbb Z_r Z r 中所有(模 r r r 的)乘法可逆元构成的集合。
解释
p = r p=r p = r 是不可能的(否则 o r ( p ) \mathrm o_r(p) o r ( p ) 不存在)。如果 p < r p<r p < r ,则 n n n 是素数时 p = n p=n p = n ,行 7 的条件为真,素性得到判断;n n n 是合数时 1 < ( p , n ) = p < r 1<(p,n)=p<r 1 < ( p , n ) = p < r ,行 5 的条件为真,素性得到判断。
( n , r ) = r (n,r)=r ( n , r ) = r 是不可能的(否则 o r ( p ) \mathrm o_r(p) o r ( p ) 不存在)。如果 ( n , r ) ≠ 1 (n,r)\neq1 ( n , r ) = 1 ,则 n > r n>r n > r 时取 a = r a=r a = r ,满足行 5 条件,素性得到判断;n ⩽ r n\leqslant r n ⩽ r 时满足行 7 条件,素性得到判断。
算法的第 9 行开始在求解有关 l l l 的等式。由于这一步算法不输出 C O M P O S I T E \tt COMPOSITE COMPOSITE ,所以我们有
( X + a ) n ≡ X n + a ( m o d X r − 1 , n ) (X+a)^n\equiv X^n+a\pmod{X^r-1,n} ( X + a ) n ≡ X n + a ( mod X r − 1 , n )
对任意 a , 0 ⩽ a ⩽ l a,\ 0\leqslant a\leqslant l a , 0 ⩽ a ⩽ l 成立(其中 a = 0 a=0 a = 0 的情形是平凡地满足的)。这表明
( X + a ) n ≡ X n + a ( m o d X r − 1 , p ) (3) \tag{3}(X+a)^n\equiv X^n+a\pmod{X^r-1,p} ( X + a ) n ≡ X n + a ( mod X r − 1 , p ) ( 3 )
解释
这是因为 p p p 是 n n n 的素因子,所以模 n n n 的同余式对模 p p p 同样成立。
对于 0 ⩽ a ⩽ l 0\leqslant a\leqslant l 0 ⩽ a ⩽ l 成立。由引理 2.1 ,我们有
( X + a ) p ≡ X p + a ( m o d X r − 1 , p ) (4) \tag{4}(X+a)^p\equiv X^p+a\pmod{X^r-1,p} ( X + a ) p ≡ X p + a ( mod X r − 1 , p ) ( 4 )
解释
这是因为 p p p 是素数,将 p p p 带入引理 2.1 的结论即得。
从 ( 3 ) (3) ( 3 ) 式和 ( 4 ) (4) ( 4 ) 式中可以推出
( X + a ) n p ≡ X n p + a ( m o d X r − 1 , p ) (X+a)^\frac np\equiv X^\frac np+a\pmod{X^r-1,p} ( X + a ) p n ≡ X p n + a ( mod X r − 1 , p )
解释
将 ( 3 ) (3) ( 3 ) 式写成如下的形式:
( ( X + a ) p ) n p ≡ X n + a ( m o d X r − 1 , p ) (3.1) \tag{3.1}((X+a)^p)^\frac np\equiv X^n+a\pmod{X^r-1,p} (( X + a ) p ) p n ≡ X n + a ( mod X r − 1 , p ) ( 3.1 )
由 ( 4 ) (4) ( 4 ) 式和同余保持幂运算的性质得:
( ( X + a ) p ) n p ≡ ( X p + a ) n p ( m o d X r − 1 , p ) (4.1) \tag{4.1}((X+a)^p)^\frac np\equiv(X^p+a)^\frac np\pmod{X^r-1,p} (( X + a ) p ) p n ≡ ( X p + a ) p n ( mod X r − 1 , p ) ( 4.1 )
结合 ( 3.1 ) , ( 4.1 ) (3.1),(4.1) ( 3.1 ) , ( 4.1 ) 式得到:
( X p + a ) n p ≡ X n + a ( m o d X r − 1 , p ) (X^p+a)^\frac np\equiv X^n+a\pmod{X^r-1,p} ( X p + a ) p n ≡ X n + a ( mod X r − 1 , p )
最后用 X X X 替代上式的 X p X^p X p ,得到:
( X + a ) n p ≡ X n p + a ( m o d X r − 1 , p ) (X+a)^\frac np\equiv X^\frac np+a\pmod{X^r-1,p} ( X + a ) p n ≡ X p n + a ( mod X r − 1 , p )
注:模 X r − 1 X^r-1 X r − 1 可保持原样,因为它并不影响同余性。
对于 0 ⩽ a ⩽ l 0\leqslant a\leqslant l 0 ⩽ a ⩽ l 成立。这样, n n n 和 n p \frac np p n 在上述式子中都表现出和 p p p 一样的性质。我们为这种性质起一个名字:
定义 4.4 对于多项式 f ( X ) f(X) f ( X ) 和正整数 m ∈ N m\in\mathbb N m ∈ N ,若
( f ( X ) ) m ≡ f ( X m ) ( m o d X r − 1 , p ) (f(X))^m\equiv f(X^m)\pmod{X^r-1,p} ( f ( X ) ) m ≡ f ( X m ) ( mod X r − 1 , p )
则称 m m m 是关于 f ( X ) f(X) f ( X ) 内省的 。
很清晰地可以看出,( 5 ) (5) ( 5 ) 式和 ( 4 ) (4) ( 4 ) 式中当 0 ⩽ a ⩽ l 0\leqslant a\leqslant l 0 ⩽ a ⩽ l 时 n p \frac np p n 和 p p p 都关于 X + a X+a X + a 内省。
下面的引理给出内省的正整数是对乘法封闭的。
引理 4.5 如果 m m m 和 m ′ m' m ′ 是关于 f ( X ) f(X) f ( X ) 内省的,则 m m ′ mm' m m ′ 也关于它内省。
证明 :因为 m m m 关于 f ( X ) f(X) f ( X ) 内省,故有:
( f ( X ) ) m ⋅ m ′ ≡ ( f ( X m ) ) m ′ ( m o d X r − 1 , p ) (f(X))^{m\cdot m'}\equiv (f(X^m))^{m'}\pmod{X^r-1,p} ( f ( X ) ) m ⋅ m ′ ≡ ( f ( X m ) ) m ′ ( mod X r − 1 , p )
同样地,因为 m ′ m' m ′ 是关于 f ( X ) f(X) f ( X ) 内省的,在 f ( X ) f(X) f ( X ) 中用 X m X^m X m 替换 X X X 后得到:
( f ( X m ) ) m ′ ≡ f ( X m ⋅ m ′ ) ( m o d X m r − 1 , p ) ≡ f ( X m ⋅ m ′ ) ( m o d X r − 1 , p ) \begin{aligned}
(f(X^m))^{m'}&\equiv f(X^{m\cdot m'})&&\pmod{X^{mr}-1,p}\\
&\equiv f(X^{m\cdot m'})&&\pmod{X^r-1,p}
\end{aligned} ( f ( X m ) ) m ′ ≡ f ( X m ⋅ m ′ ) ≡ f ( X m ⋅ m ′ ) ( mod X m r − 1 , p ) ( mod X r − 1 , p )
(最后一步是因为 X r − 1 X^r-1 X r − 1 整除 X m r − 1 X^{mr}-1 X m r − 1 。)将这两个等式结合我们可以得到:
( f ( X ) ) m ⋅ m ′ ≡ f ( X m ⋅ m ′ ) ( m o d X r − 1 , p ) ■ (f(X))^{m\cdot m'}\equiv f(X^{m\cdot m'})\pmod{X^r-1,p}\ \blacksquare ( f ( X ) ) m ⋅ m ′ ≡ f ( X m ⋅ m ′ ) ( mod X r − 1 , p ) ■
对于正整数 m m m ,m m m 关于其内省的函数构成的集合在乘法下也是封闭的:
引理 4.6 若 m m m 关于 f ( X ) f(X) f ( X ) 和 g ( X ) g(X) g ( X ) 内省,则它关于 f ( X ) ⋅ g ( X ) f(X)\cdot g(X) f ( X ) ⋅ g ( X ) 也是内省的。
证明 :我们有:
( f ( X ) ⋅ g ( X ) ) m = ( f ( X ) ) m ⋅ ( g ( X ) ) m ≡ f ( X m ) ⋅ g ( X m ) ( m o d X r − 1 , p ) ■ \begin{aligned}
(f(X)\cdot g(X))^m&=(f(X))^m\cdot(g(X))^m\\
&\equiv f(X^m)\cdot g(X^m)\pmod{X^r-1,p}\ \blacksquare
\end{aligned} ( 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 } I=\displaystyle\left\{\left(\frac np\right)^i\cdot p^j\ \middle|\ i,j\geqslant 0\right\} I = { ( p n ) i ⋅ p j i , j ⩾ 0 } 中的每一个数关于集合 P = { ∏ a = 0 l ( X + a ) e a | e a ⩾ 0 } P=\displaystyle\left\{\prod_{a=0}^l(X+a)^{e_a}\ \middle|\ e_a\geqslant0\right\} P = { a = 0 ∏ l ( X + a ) e a e a ⩾ 0 } 中的每一个多项式都是内省的。我们现在基于这些集合定义两个群;它们将在接下来的证明中起到重要的作用。
第一个群是 I I I 中所有数模 r r r 的剩余(余数) 构成的集合。由于之前所观察到的,( n , r ) = ( p , r ) = 1 (n,r)=(p,r)=1 ( n , r ) = ( p , r ) = 1 ,所以这是 Z r ∗ \mathbb Z_r^* Z r ∗ 的一个子群。记这个群为 G G G ,记 ∣ G ∣ = t |G|=t ∣ G ∣ = t 。G G G 是通过 n n n 和 p p p 模 r r r 生成的,因为 o r ( n ) > log 2 n \mathrm o_r(n)>\log^2 n o r ( n ) > log 2 n ,故得到 t > log 2 n t>\log^2 n t > log 2 n 。
解释
( n , r ) = 1 (n,r)=1 ( n , r ) = 1 是之前的假设(否则算法提前结束)。( p , r ) = 1 (p,r)=1 ( p , r ) = 1 是因为 p p p 是素数。
G G G 是 Z r ∗ \mathbb Z_r^* Z r ∗ 的子群是因为:
乘法运算满足结合律;
G G G 中含有单位元 1 1 1 ;
G G G 中的每个元素都有逆元:对于 ∀ x ∈ G \forall x\in G ∀ x ∈ G ,总有 ( x , r ) = 1 (x,r)=1 ( x , r ) = 1 。(这是因为 ( p , r ) = 1 (p,r)=1 ( p , r ) = 1 和 ( n p , r ) = 1 (\frac np,r)=1 ( p n , r ) = 1 总是成立,若干个它们乘起来也与 r r r 互素。)于是,∃ a , b ∈ Z \exists a,b\in\mathbb Z ∃ a , b ∈ Z 使得 a x + b r = 1 ax+br=1 a x + b r = 1 。两侧对 r r r 取模,得到 a x ≡ 1 ( m o d r ) ax\equiv1\pmod r a x ≡ 1 ( mod r ) ,此时 a a a 即为 x x x 的逆元。
t > log 2 n t>\log^2 n t > log 2 n 的解释:
首先,1 , n , n 2 , ⋯ , n o r ( n ) − 1 1,n,n^2,\cdots,n^{\mathrm o_r(n)-1} 1 , n , n 2 , ⋯ , n o r ( n ) − 1 都是 I I I 的元素,而且它们 n n n 个元素模 r r r 的值两两不同。否则,∃ i , j < o r ( n ) \exists i,j<\mathrm o_r(n) ∃ i , j < o r ( n ) 使得 n i ≡ n j ( m o d r ) n^i\equiv n^j\pmod r n i ≡ n j ( mod r ) ,那么 0 ≡ n j − n i = n i ( n j − i − 1 ) ( m o d r ) 0\equiv n^j-n^i=n^i(n^{j-i}-1)\pmod r 0 ≡ n j − n i = n i ( n j − i − 1 ) ( mod r ) 。如之前所述,n i ≢ 0 ( m o d r ) n^i\not\equiv0\pmod r n i ≡ 0 ( mod r ) ,所以 n j − i ≡ 1 ( m o d r ) n^{j-i}\equiv1\pmod r n j − i ≡ 1 ( mod r ) 。而 j − i < o r ( n ) j-i<\mathrm o_r(n) j − i < o r ( n ) ,与 o r ( n ) \mathrm o_r(n) o r ( n ) 定义矛盾。
将这些数模 r r r 后得到了互异的 G G G 的元素,所以 G G G 的大小(阶)t ⩾ o r ( n ) t\geqslant\mathrm o_r(n) t ⩾ o r ( n ) 。又由引理 4.3 的 o r ( n ) > log 2 n \mathrm o_r(n)>\log^2 n o r ( n ) > log 2 n ,就得到了 t > log 2 n t>\log^2 n t > log 2 n 。
为了定义第二个群,我们需要了解一些关于有限域上分圆多项式的基本事实。令 Q r ( X ) Q_r(X) Q r ( X ) 为 F p \mathbb F_p F p 上的 r r r 阶分圆多项式。多项式 Q r ( X ) Q_r(X) Q r ( X ) 整除 X r − 1 X^r-1 X r − 1 ,并且可以被分解为次数为 o r ( p ) \mathrm o_r(p) o r ( p ) 的不可约多项式 [LN]。令 h ( X ) h(X) h ( X ) 是其中一个不可约多项式。由于 o r ( p ) > 1 \mathrm o_r(p)>1 o r ( p ) > 1 ,h ( X ) h(X) h ( X ) 的次数大于一。第二个群是所有 P P P 中多项式模 p p p 和 h ( X ) h(X) h ( X ) 的剩余(余式) 。记这个群为 G \mathcal G G ,它是由域 F = F p [ X ] / ( h ( X ) ) \mathbb F=\mathbb F_p[X]/(h(X)) F = F p [ X ] / ( h ( X )) 中的元素 X , X + 1 , X + 2 , ⋯ , X + l X,X+1,X+2,\cdots,X+l X , X + 1 , X + 2 , ⋯ , X + l 生成的。G \mathcal G G 是 F \mathbb F F 的子群。
粗糙的解释
分圆多项式:n n n 次分圆多项式是指多项式 X n − 1 X^n-1 X n − 1 因式分解中的一个特定多项式 f ( X ) f(X) f ( X ) 。f ( X ) f(X) f ( X ) 满足这样的性质:对于 ∀ k < n \forall k<n ∀ k < n ,f ( X ) = 0 f(X)=0 f ( X ) = 0 的解总不是 X k − 1 = 0 X^k-1=0 X k − 1 = 0 的解。
感性地理解分圆多项式:在复数域上,X n − 1 X^n-1 X n − 1 的根(被称为单位根 )总是出现在复平面的单位圆上。(这与复数乘法的几何含义——长度(模)相乘、角度相加——相吻合)所以,X n − 1 X^n-1 X n − 1 的解多项式总是这些等分单位圆的半径所代表的复数的积。而这些复数中,总有一些也是 X k − 1 ( k < n ) X^k-1\ (k<n) X k − 1 ( k < n ) 的解。比如 X 3 − 1 X^3-1 X 3 − 1 的三个根 X 1 = 1 , X 2 = − 1 − 3 i 2 , X 3 = − 1 + 3 i 2 X_1=1,X_2=\frac{-1-\sqrt3\mathrm i}2,X_3=\frac{-1+\sqrt3\mathrm i}2 X 1 = 1 , X 2 = 2 − 1 − 3 i , X 3 = 2 − 1 + 3 i 中,X 1 X_1 X 1 显然也是 X 1 − 1 X^1-1 X 1 − 1 的解。所以,只有 ( X − X 2 ) ( X − X 3 ) (X-X_2)(X-X_3) ( X − X 2 ) ( X − X 3 ) 这个多项式满足分圆多项式的含义。(X 2 , X 3 X_2,X_3 X 2 , X 3 被称为三次的本原单位根 。)类似地:
四次分圆多项式是“上面的”根和“下面的”根的“乘积”(“左面的”根满足二次的解,“右面的”根满足一次的解);
五次分圆多项式就是除了 1 1 1 的剩下四个的“乘积”;
六次分圆多项式就是除了 1 , − 1 , − 1 − 3 i 2 , − 1 + 3 i 2 1,-1,\frac{-1-\sqrt3\mathrm i}2,\frac{-1+\sqrt3\mathrm i}2 1 , − 1 , 2 − 1 − 3 i , 2 − 1 + 3 i 这四个根之后剩下的“右上”“右下”这两个根的“乘积”。
(上文“乘积”的意思就是 ∏ i ( X − X i ) \displaystyle\prod_i(X-X_i) i ∏ ( X − X i ) ,其中 X i X_i X i 就是“根”。)
下面考察 n n n 次分圆多项式的次数。显然,这取决于它是多少个“根”乘起来的——或者说 n n n 次本原单位根有多少个。n n n 次单位根有 n n n 个是显然的,所以只需要去掉那些是单位根但不是本原单位根的就可以了。考虑第 i i i 个单位根,它距离 x x x 正半轴的角度为 i n ⋅ 2 π \frac in\cdot2\pi n i ⋅ 2 π 。但如果 ( i , n ) ≠ 1 (i,n)\neq1 ( i , n ) = 1 的话,那么它还可以写成 i / ( i , n ) n / ( i , n ) ⋅ 2 π \frac {i/(i,n)}{n/(i,n)}\cdot2\pi n / ( i , n ) i / ( i , n ) ⋅ 2 π 。也就是说,这个根同样是 X n ( i , n ) − 1 = 0 X^\frac n{(i,n)}-1=0 X ( i , n ) n − 1 = 0 的第 i ( i , n ) \frac i{(i,n)} ( i , n ) i 个根,这就不满足本原单位根的定义了。所以,如果第 i i i 个根是本原单位根,那么它就需要满足 ( i , n ) = 1 (i,n)=1 ( i , n ) = 1 。所以 n n n 次本原单位根的个数就是比 n n n 小的、与 n n n 互素的正整数的个数。这个值恰好就是 φ ( n ) \varphi(n) φ ( n ) 。也就是说:n n n 次分圆多项式的次数为 φ ( n ) \varphi(n) φ ( n ) ;或者说,n n n 次分圆多项式在复数域上可以分解成 φ ( n ) \varphi(n) φ ( n ) 个一次不可约多项式。
此外,高斯证明了一个不太平凡的结论,如果 n n n 次分圆多项式定义在整数环上,则它是不可约的。对于 n n n 是素数的情形可以通过艾森斯坦判别法来做,但对于其他情形则略显复杂。
但是原文中的多项式并不是定义在整数环 Z \mathbb Z Z 上的,而是整数模 p p p 的域 F p \mathbb F_p F p 上。不过可以证明,此时的 n n n 次分圆多项式可以被分解为 φ ( n ) o n ( p ) \frac{\varphi(n)}{\mathrm o_n(p)} o n ( p ) φ ( n ) 个不可约多项式的乘积,其中每个不可约多项式都是 o n ( p ) \mathrm o_n(p) o n ( p ) 次的。(相关的证明在 [LN] 的定理 2.47 中给出。)这个 o n ( p ) \mathrm o_n(p) o n ( p ) 次的多项式就是后文所述的 h ( X ) h(X) h ( X ) 。
群 G \mathcal G G 是定义在有限域 F = F p [ X ] / ( h ( X ) ) \mathbb F=\mathbb F_p[X]/(h(X)) F = F p [ X ] / ( h ( X )) 下的,也就是 F p [ X ] \mathbb F_p[X] F p [ X ] 关于次数为 o r ( p ) \mathrm o_r(p) o r ( p ) 的多项式 h ( X ) h(X) h ( X ) 取模得到的多项式域。在这个域中,有多项式 X , X + 1 , ⋯ , X + l X,X+1,\cdots,X+l X , X + 1 , ⋯ , X + l 这 l + 1 l+1 l + 1 个元素,它们之间互相做乘法就得到了 G \mathcal G G 。
h ( X ) h(X) h ( X ) 的不可约性保证了这个群的乘法是良定义的,如同 Z r \mathbb Z_r Z r 中的 r r r 也必须为素数的幂才能保证其乘法的良定义。
下面的引理给出了群 G \mathcal G G 大小的下界。这是由 Hendrik Lenstra Jr. [Len] 给出的,它相比本论文较早的版本 [AKS] 在结论上有一些微小的改进。
Macaj [Mac] 也独立地证明了此引理。
引理 4.7 (Hendrik Lenstra Jr.)∣ G ∣ ⩾ ( t + l t − 1 ) |\mathcal G|\geqslant\displaystyle\binom{t+l}{t-1} ∣ G ∣ ⩾ ( t − 1 t +