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