AKS质数测试

AKS质数测试（又称Agrawal–Kayal–Saxena质数测试和Cyclotomic AKS test）是一个决定型质数测试演算法 ，由三个来自印度坎普尔理工学院的计算机科学家，Manindra Agrawal、Neeraj Kayal和Nitin Saxena，在2002年8月6日发表于一篇题为质数属于P的论文。作者们因此获得了许多奖项，包含了2006年的哥德尔奖和2006年的富尔克森奖。这个演算法可以在多项式时间之内，决定一个给定整数是质数或者合数。

**重要性**
AKS最关键的重要性在于它是第一个被发表的一般的、多项式的、确定性的和无仰赖的质数判定算法。先前的算法至多达到了其中三点，但从未达到全部四个。- AKS算法可以被用于检测任何一般的给定数字是否为质数。很多已知的高速判定算法只适用于满足特定条件的质数。例如，卢卡斯-莱默检验法仅对梅森质数适用，而Pépin's test仅对费马数适用。- 算法的最长运行时间可以被表为一个目标数字长度的多项式。ECPP和APR能够判断一个给定数字是否为质数，但无法对所有输入给出多项式时间范围。- 算法可以确定性地判断一个给定数字是否为质数。随机测试演算法，例如米勒-拉宾检验和Baillie–PSW，可以在多项式时间内对给定数字进行校验，但只能给出概率性的结果。- AKS算法并未“仰赖”任何未证明猜想。一个反例是确定性米勒检验：该算法可以在多项式时间内对所有输入给出确定性结果，但其正确性却基于尚未被证明的广义黎曼猜想。

**概念**
AKS质数测试主要是基于以下定理：整数n (≥ 2)是质数，若且唯若
这个同余多项式对所有与n互质的整数a均成立。 这个定理是费马小定理的一般化，并且可以简单的使用二项式定理跟二项式系数的这个特征:
 ，对任何  ，若且唯若 n 是质数
来证明出此定理。
虽然说关系式 (1) 基本上构成了整个质数测试，但是验证花费的时间却是指数时间。因此，为了减少计算复杂度，AKS改为使用以下的同余多项式：
这个多项式与存在多项式f与g，令:
意义是等同的。
这个同余式可以在多项式时间之内检查完毕。这里我们要注意所有的质数必定满足此条件式（令g = 0则 (3) 等于 (1)，因此符合n必定是质数）。 然而，有一些合数也会满足这个条件式。有关AKS正确性的证明包含了推导出存在一个够小的r以及一个够小的整数集合A，令如果此同余式对所有A里面的整数都满足，则n必定为质数。

**历史以及运算时间**
在上文引用的论文的第一版本中，作者们证明了检验正整数  是否为质数的算法时间复杂度为 。但是，论文证明的时间上界较为宽松；事实上，一个被普遍相信的关于索菲热尔曼质数分布的假设如果为真，则会立即将最坏情况减至 。
在这一发现后的几个月中，新的变体陆续出现（Lenstra 2002, Pomerance 2002, Berrizbeitia 2003, Cheng 2003, Bernstein 2003a/b, Lenstra和Pomerance 2003）并依次提高了算法的时间复杂度。由于这些变体的出现，Crandall和Papadopoulos在其科学论文“AKS-类质数测试的实现”（2003年三月发表）中将其称为算法的“AKS-类”。
出于对这些变体和其他回复的回应，论文“质数属于P”稍后被进行了更新，新版本包括了一个AKS算法的正规公式化表述和其正确性证明。（这一版本在数学年刊上发表。）虽然基本思想没有变化， 却被采用了新方法进行选择，而正确性证明也变得更加紧致有序。与旧证明依赖于许多不同的方法不同，新版本几乎只依赖于有限域上的分圆多项式的特征。新版本同时也将时间复杂度改进至 。通过筛法获得的其他结果可以将其进一步改进至 。
在2005年，Carl Pomerance和H. W. Lenstra, Jr.展示了一个AKS算法的变体，其时间复杂度为 。

**演算法**
整个演算法的操作如下：
 输入：整数 n > 1
# 若存在整数a > 0 且b > 1 ，令 n = ab ；则输出合数
# 找出最小的 r 令 ordr(n) > log2(n).
# 若 对某些a ≤ r，1 n≠ Xn+a (mod Xr − 1,n), 输出合数。
# 输出 质数。
这里的 ordr(n)是n mod r的阶。 另外，这里的log 代表以二为底的对数，则是r的欧拉函数。
下面说明若n是个质数，那么算法总是会返回质数：由于n是质数，步骤1和3永远不会返回合数。步骤5也不会返回合数，因为(2)对所有质数n为真。因此，算法一定会在步骤4或6返回质数。
对应地，如果n是合数，那么算法一定返回合数：如果算法返回质数，那么则一定是从步骤4或6返回。对于前者，因为n ≤ r， n必然有因子a ≤ r符合1  1。
}

**注释**

**延伸阅读**
 cite book | last=Dietzfelbinger | first=Martin | title=Primality testing in polynomial time. From randomized algorithms to ``PRIMES is in P | series=Lecture Notes in Computer Science | volume=3000 | location=Berlin | publisher=施普林格科学+商业媒体 | year=2004 | isbn=3-540-40344-2 | zbl=1058.11070 

**外部连结**
 title=AKS Primality Test-  R. Crandall, Apple ACG, and J. Papadopoulos (March 18, 2003): On the implementation of AKS-class primality tests (PDF)-  Article by Borneman, containing photos and information about the three Indian scientistsdate=20090318110722  (PDF)-  Andrew Granville: It is easy to determine whether a given integer is primedate=20090308081230 -  The Prime Facts: From Euclid to AKSdate=20100806151808 , by Scott Aaronson (PDF)-  The PRIMES is in P little FAQdate=20100223084530  by Anton Stiglic-  2006 Gödel Prize Citation-  2006 Fulkerson Prize Citationdate=20160303183420 -  The AKS "PRIMES in P" Algorithm Resourcedate=20100927064107 -  cite web|last=Grime|first=Dr. James|title=Fool-Proof Test for Primes - Numberphile|url=https://www.youtube.com/watch?v=HvMSRWTE2mI&feature=youtu.be|publisher=布雷迪·哈兰|format=video|accessdate=2018-05-10|archive-date=2018-03-23|archive-url=https://web.archive.org/web/20180323152934/https://www.youtube.com/watch?v=HvMSRWTE2mI&feature=youtu.be|dead-url=no the video describes the exponential time relation (1), which it calls AKS