AKS素数判定法

AKS primality test

8月6日付の9ページの原稿は、ガウスの言葉で始まっていた。

(X + a)ⁿとXⁿ + aを、Xʳ − 1とnで割った余りで比べる。乱数にも未証明の予想にも頼らず、桁数の多項式の手間で、素数かどうかを確実に決める。

年代
2002年
習う
大2・数論・合同式と素数判定
レベル
大学(例題 5 問)
作成日
更新日
執筆・監修
佐々木 航
逸話

1801年の言葉で始まる原稿

561は素数だろうか。3で割れば187になり、すぐに合成数だと分かる。ところが、2を560回掛けた数を561で割ると、余りは1になる。2でない素数ならをで割った余りは必ず1、というフェルマーの小定理の結論と、見分けがつかない。

素数かどうかを確実に決めたいなら、小さい数から順に割っていけばよい。ただ、100桁の素数を確かめるには、割る数を素数に限っても回を超える割り算が要る。桁数の多項式の手間で済む判定は長いあいだ、乱数か、証明されていない予想のどちらかに頼ってきた。

2002年8月、インド工科大学(IIT)カーンプル校の3人が、その両方を手放した9ページの原稿を出した。題は「PRIMES is in P」、日付は8月6日。本文の前には、ガウスが1801年の『整数論の研究』に書いた一節が置かれている。

「素数と合成数を見分け、合成数を素因数に分ける問題は、算術で最も重要で有用なものの一つとして知られている」。ガウスは、見分ける問題と分ける問題を一続きに挙げた。3人が原稿で解いたのは、その前の半分である。1

カール・フリードリヒ・ガウスの肖像(Carl Friedrich Gauss)
カール・フリードリヒ・ガウス1777–1855数論・天文学・測量・地磁気に業績を残し、素数の分布を予想した出典: Wikimedia Commons・Gottlieb Biermann / After Christian Albrecht Jensen・Public domain

要旨は1文しかない。入力された数が素数か合成数かを決める、決定的な多項式時間のアルゴリズムを示す、というものだ。乱数を使わず、証明されていない予想にも頼らず、の桁数の多項式で抑えられる手間で、必ず正しい答えを出す。

雨の筋が残る窓辺の机に、印刷した紙の束と、ブラウン管の古いモニターが置かれている(画像生成 AI で描いたイメージ)
2002年8月、IITカーンプル校。9ページの原稿には8月6日の日付が入っていた画像生成AIで描いたイメージ

マニンドラ・アグラワルは、同校で計算量理論を研究する教授である。共著者のニーラジ・カヤルとニティン・サクセナは、この年からアグラワルのもとで博士課程に進んだ。サクセナの経歴書によると、サクセナは2002年に学部(B.Tech)を終えている。卒業研究の題は「決定的な多項式時間の素数判定に向けて」で、指導教員はアグラワルだった。原稿の参考文献には、ほぼ同じ題のカヤルとサクセナの連名の報告が載っている。2人はその報告で、前の年に同じ大学のラジャット・バッタチャルジーとプラシャント・パンデーの報告に載った予想を、、の範囲で計算機にかけて確かめていた。

マニンドラ・アグラワル2人の学生とAKS素数判定法を示した、IITカーンプル校の教授

原稿は、外からの指摘を受けて書き直されていく。2002年8月のうちに、ヘンドリック・レンストラが群の大きさの見積もりを改め、素数の分布についての深い結果を使わなくても証明が通るようにした。補題の証明の誤りを知らせた人の中には、ドイツ・シューラーアカデミーの受講生たちもいたと、最終版の謝辞にある。最終版は2004年にAnnals of Mathematicsの第160巻2号に載り、手間の見積もりは、最初の原稿のから、初等的な議論だけで、その深い結果も使えばまで下がった。

2006年、3人の論文はゲーデル賞とファルカーソン賞を受けた。EATCSの記録によると、その年のゲーデル賞は、ヴェネツィアで開かれた国際会議ICALPで贈られている。

運河に面した古い建物の会議場を、聴衆の後ろから見る。遠くの演台に小さな人影がある(画像生成 AI で描いたイメージ)
2006年のゲーデル賞は、ヴェネツィアで開かれた国際会議ICALPで贈られた画像生成AIで描いたイメージ
起源

561は素数のふりをする

フェルマーは1640年10月18日付のフレニクルへの手紙で、いまフェルマーの小定理と呼ぶ事実を書き送った。今の言葉に直せば、素数と、で割り切れないについて、がで割り切れる、というものだ。両辺にを掛ければ、すべての整数でがで割り切れる、という形にもなる。

ピエール・ド・フェルマーの肖像(French: Portrait de Pierre de Fermat Portrait of Pierre de Fermattitle QS:P1476,fr:"Portr…)
ピエール・ド・フェルマー1601頃–1665法律家の仕事の合間に、数論と確率論の土台を築いた出典: Wikimedia Commons・Rolland Lefebvre・Public domain

判定に使うなら、この定理はとても速い。をで割った余りは、2乗をくり返せば、の桁数に比例する回数の掛け算で求まる。余りが1でなければ、は合成数だと確定する。困るのは逆向きで、余りが1でも素数とは限らない。は、を341で割ると1余るが、底を3にすれば余りは56になり、正体が分かる。

では、と互いに素などの底を選んでもだまされる合成数はあるのだろうか。

ある。1910年、ロバート・カーマイケルは、がすべての整数についてを割り切ることを指摘した。その11年前に、コルセルトがこうした数の見分け方を書いていた。が同じ素数を2度含まず、を割るどの素数でもがを割り切ること、である。561なら2、10、16が、どれも560を割り切る。

ロバート・カーマイケルの肖像(画像生成 AI で描いたイメージ)
ロバート・カーマイケル1879–1967フェルマーの判定をすり抜ける合成数561を1910年に指摘した画像生成AIで描いたイメージ

この性質をもつ合成数をカーマイケル数と呼び、小さい順に561、1105、1729、2465、2821と続く。無限にあるかどうかは長く分からなかったが、1994年にW・R・アルフォード、アンドリュー・グランヴィル、カール・ポメランスが決着をつけた。十分大きなでは、以下のカーマイケル数は個より多い。

だまされない判定は、代わりに何かを手放してきた。1976年のゲイリー・ミラーの判定は、乱数を使わずに速いが、拡張リーマン予想が正しいことを前提にする。1980年のマイケル・ラビンの判定は前提を外した代わりに底を乱数で選び、合成数を素数と答える確率がわずかに残る。1977年のロバート・ソロヴェイとフォルカー・シュトラッセンの判定も、乱数に頼っていた。1983年のレナード・アドルマン、ポメランス、ロバート・ルメリーの判定は乱数も予想も使わないものの、手間はで、桁数のどんな多項式よりもわずかに速く増える。

AKSが土台にしたのは、フェルマーの小定理を多項式に広げた恒等式だった。1999年にアグラワルとソーメナト・ビスワスが、乱数を使う判定の土台にしたものと同じ式である。

とが互いに素なら、これが成り立つのはが素数のときだけだ。ただし左辺の係数は個あり、全部を調べる手間は試し割りより重い。3人は両辺をでも割り、比べる係数を個に減らした。合成数がこの縮めた式を通り抜けないように、をどう選び、をいくつ試せばよいか。論文の中身は、その問いへの答えである。

証明

係数がnで割り切れるとき

と、と互いに素な整数について、が素数であることと、多項式としてが成り立つことは同じである(論文の補題2.1)。多項式の合同は、同じ次数の係数どうしがで割った余りで等しいことを言う。展開には二項定理を使う。素数でがの倍数になることと、がの倍数になることは、二項定理の例題5でも手で確かめられる。

  1. 両辺の差を展開する

  2. が素数なら、では分子だけがを含む

  3. 定数項もフェルマーの小定理での倍数になり、差の係数はすべてで割り切れる

  4. が合成数なら、を割る素数をとり、がちょうどで割り切れるとする。の係数を見る

  5. 分子での倍数はだけで(なら)、はちょうど個ある。分母のはを1個含むので、残るは個になる

    n = 9 = 3²の行では、9Cᵢを9で割って余りが残るのはi = 3と6の84だけで、余りは3。3つ目の係数で式が崩れる。
  6. はで割り切れないので、の係数はで割り切れず、でも割り切れない

合成数なら、どこかの係数が必ず残る。561でとするとで、561で割った余りは187だ。係数を全部数えると、560個のうち114個が561で割り切れない。

フェルマーの判定がだまされたのは、この係数を見ていなかったからだ。両辺にを入れると、左辺は、右辺はになり、個の係数は足し合わされて1つの数に潰れる。カーマイケル数が素数と区別できないのは、その和の上だけである。

証明

素数のべきしか通れない

最終版の手順は6つしかない。まず、が()と書ければ合成数と答える。次に、をで割った余りが1になる最小の、つまりを法とするの位数が、を超える最小のを探す。の底は2だ。以下のに、と1でもでもない公約数をもつものがあれば合成数とし、なら素数とする。残ったでは、からまで縮めた式を確かめ、1つでも崩れたら合成数、すべて通れば素数。は、以下でと互いに素な数の個数を表す。

素数がすべての手順を通ることは、前の補題から分かる。難しいのは逆向きで、完全な証明は論文の第4節にある。筋道は次のとおりだ。なので、の素因数にはとなるがある。そのを1つとる。手順3と4を通っているので、である。

  1. 手順5の式はで割っても成り立ち、補題からも同じ形の式を満たす

  2. となるを、について内省的と呼ぶ。とは、手順5で試したどのにも内省的で、内省的な数の積も内省的になる

  3. の数をで割った余りは群をつくる。はを含むので、その大きさは位数以上になる

  4. を割る番目の円分多項式から、を法とする既約な因数をとる。で割ってできる有限体の中で、()の積がつくる群は大きい

  5. がのべきでなければ、指数を以下に限ってもには個の数があり、で割った余りが等しい2数が見つかる。の元はすべての根になり、根の数は次数を超えない

  6. 4と5の不等式は両立しないので、はのべきである。()は最初の手順で除いてある

矛盾を生んだのは、手順2のの選び方だ。なのでとなり、個のだけで、群をより大きくできる。論文は、そうしたが以下に必ず見つかることも示していて(補題4.3)、手順5の手間は桁数の多項式に収まる。

途中の計算

r個の位置に折りたたむ

補題の式は、で割った余りに縮めても、素数なら成り立ったままだ。指数はで割った余りの位置に回り込む。

  1. 二項定理で展開する

  2. なので、指数をで割った余りに替える

  3. 余りが同じになる項をまとめる

    (X + 1)⁶の7つの係数を、指数を3で割った余りごとに集めると22、21、21になる。6で割った余りは4、3、3で、右辺のX⁰ + 1 = 2と合わない。
  4. 左辺は係数が個の多項式になる

  5. 右辺の指数も同じように替える

  6. 係数をで割った余りで比べる

、、で手を動かしてみる。の係数は1、6、15、20、15、6、1で、指数を3で割った余りごとに足すと、、になる。6で割ると4、3、3が残り、右辺のとは合わない。

にすると、すべての項が定数項に集まってとなる。比べるのはで、と書けば、つまりフェルマーの判定そのものだ。を上げるほど、潰れていた係数の違いが見えてくる。

561でにすると、左辺は、右辺は2で、一致しない。それでも係数の和はで、フェルマーの判定の答えと変わらない。で調べると、561が通り抜けるのはだけで、と、5から60までのすべてので崩れる。

応用

鍵の素数は確率で選ぶ

2048ビットのRSAの鍵を作るときは、1024ビットの素数を2つ選ぶ。アメリカ国立標準技術研究所(NIST)が2023年2月3日に公開した電子署名の規格FIPS 186-5は、その判定にミラー・ラビン法を使うよう定めている。1024ビットの素数、では、誤る確率を以下にするなら4回、以下なら5回の判定が要る。ミラー・ラビン法のあとにリュカの判定を1回足してもよく、規格には「この2つを組み合わせた判定を通る合成数は知られていない」とある。リュカの判定の中身はフィボナッチ数列、候補を選び直す回数の見積もりは素数定理で読める。

では、同じ大きさの数にAKSを使うと、どうなるか。1024ビットのではが1023を超えるので、手順2のはより大きくなり、多項式の係数は100万個を超える。試すもから104万通りを超え、その1つごとに、100万個の係数をもつ多項式の2乗を約1000回くり返す。ミラー・ラビン法の1回は、1024ビットの数の2乗を約1000回すれば済む。実務の判定にAKSが使われないのは、この差のためである。

AKSの値打ちは速さではなく、乱数も予想も使わずに「多項式時間で決まる」と証明した点にある。もう一つ、素数かどうかを決める問題と、素因数を見つける問題は別物だ。AKSが合成数と答えても、崩れたからは約数が何も分からない。素因数を見つける問題には、古典的な計算機で多項式時間の方法が今も知られておらず、RSA暗号の安全性はこの差の上に立っている。量子計算機でこの差を詰めるのがショアのアルゴリズムで、小さな数を素数の積に分ける手順は素因数分解で確かめられる。

例題と解説

係数と位数を手で数える

例題 1基本5と6の行の係数

とを展開し、係数がそれぞれ5、6で割り切れるかを調べよ。

解説を見る

二項係数を並べる。

係数の5、10、10、5は、どれも5で割り切れる。

15と20は6で割り切れない。証明の手順4〜6でとするとが奇数になり、とするとが3で割り切れない。どちらの素因数からも、崩れる係数が見つかる。

例題 2基本561がだます理由

が561と互いに素なとき、を示せ。を使ってよい。

解説を見る

560は2でも10でも16でも割り切れる。

は3、11、17のどれでも割り切れないので、フェルマーの小定理から

が成り立つ。それぞれを280乗、56乗、35乗すると、どの法でもになる。3、11、17はどの2つも互いに素なので、積の561を法としても次が成り立つ。

コルセルトの見分け方は、この計算を一般のに広げたものである。

例題 3入試rを探す

について、31のを法とする位数がを超える最小のを求めよ。を使ってよい。

解説を見る

なので、位数は25以上でなければならない。位数は以下なので、から調べる。

ではで、から位数は4。

ではで、は1でなく、から位数は9。

ではで、から位数は6。

ではで、、、はどれも1でないので、位数は28。

28は24.54を超えるので、である。試すの個数はになる。

例題 4難関素数のべきの二項係数

素数とについて、はで割り切れるが、では割り切れないことを示せ。

解説を見る

分数の形に書く。

ならなので、分子に含まれるはちょうど個である。分母のに含まれるは1個なので、に残るは個になる。、ならで、3はちょうど1個である。

例題 5大学r = 2の判定を通る合成数

を奇数のカーマイケル数とする。どの整数についても、次が成り立つことを示せ。

解説を見る

で割った余りはの形をしていて、とを入れた値はとになる。は奇数なので2はを法として逆数をもち、2つの余りが等しいことは、とでの値がを法として等しいことと同じである。

左辺の値はと、右辺の値はと。カーマイケル数ではすべての整数でなので

となり、両辺は一致する。の判定は、との2か所でフェルマーの判定をするのと同じで、カーマイケル数を見抜けない。561がとの判定を、どのでも通り抜けるのはこのためである。

図示

乱数と予想と時間の条件

乱数を使わない、未証明の予想を使わない、桁数の多項式時間で終わる。試し割り、ミラー、ラビン、APR、AKSのうち、3つがそろうのは2002年のAKSが初めてである。

フェルマーの判定は、カーマイケル数で答えを誤るので、この比べ方の外にある。ソロヴェイとシュトラッセンの判定は、ラビンの判定と同じ並びの○と×になる。

シミュレーション

nを選び、3つの判定にかける

例の数を押すか、つまみで奇数を選ぶと、上からフェルマーの判定、の個の係数、論文ので縮めた式が並ぶ。561、1105、1729のようなカーマイケル数では、上の段でと互いに素な底がすべて余り1を返すのに、中の段にはで割り切れない係数の位置に縦の筋が現れ、下の段はで崩れる。5から3001までの奇数では、合成数はどれもで崩れ、素数はすべてので式が成り立つ。ただし、この大きさの合成数なら、論文どおりの手順は手順1の累乗の判定か手順3の公約数で止まる。下の段は、その2つを飛ばして式だけを当てた結果で、論文どおりの結論は下の読み出しに出る。

広がる学問

決定的な判定が届く先

  • 数学 有限体の上の多項式を調べるとき、乗が係数ごとの乗になるを使う。AKSの証明では、この形が成り立つ指数を数え上げて、を素数のべきに追い込む。の代わりに別の多項式で割る判定も、同じ考えで組み立てられる。
  • 情報科学 問題を計算量で分類するとき、素数の集合PRIMESが多項式時間のクラスPに入る例として挙がる。合成数には約数という短い証拠があり、プラットが1975年の論文で示したように素数にも短い証拠があるが、証拠を渡されなくても多項式時間で決められると示したのはAKSだった。とが等しいかを確かめる問題は、2つの多項式が等しいかを判定する多項式恒等式判定の一例でもあり、サクセナはのちにこの問題の総説を書いている。
  • 哲学 「実際に計算できる」とは何かを数学の基礎から問うとき、有界算術と呼ばれる弱い公理の体系で、どこまで証明できるかを調べる。素数判定が多項式時間で済むという定理も、その体系の中で証明できるかが問われてきた。
いまの研究と事業

速さの証明と、巨大な素数の証明書

  • 2019年 ヘンドリック・レンストラ(ライデン大学)とカール・ポメランス(ダートマス大学): AKSの手順を変え、手間を以下に抑えた。論文は『Journal of the European Mathematical Society』に載った。の代わりに、ガウスが正多角形の作図の証明で使ったガウス周期から作る次数の多項式で割り、を確かめる。ポメランスは講演で、ガウスの代表的な結果を使って、素数と合成数を見分けよというガウスの呼びかけに前進できたのは喜ばしい、と語っている。(出典: Lenstra, Pomerance「Primality testing with Gaussian periods」、J. Eur. Math. Soc. 21 (2019), 1229-1269・Pomerance「Primality testing: then and now」)
  • 2021年 ロバート・ベイリー、アンドリュー・フィオリ(レスブリッジ大学)、サミュエル・ワグスタッフ(パデュー大学): ベイリー・PSW判定を、計算の手間をほとんど増やさずに強める方法を示し、『Mathematics of Computation』に発表した。この判定は、フェルマー型の判定とリュカ型の判定を組み合わせる。フェルマー型の部分は、AKSの式でにしたを強めた判定である。論文によると、パラメーターを適切に選べば、この組み合わせを通る奇数の合成数は報告されていない。数値計算のライブラリGMPの素数判定も、試し割りのあとにこの判定を使う。(出典: Baillie, Fiori, Wagstaff「Strengthening the Baillie-PSW primality test」arXiv:2006.14425、Math. Comp. 90, no. 330, 2021・GNU MP 6.3.0 Manual「Number Theoretic Functions」)
  • 2025年 アンドレアス・エンゲとポール・アンダーウッド: 1が109,297個並ぶ数が素数であることの証明書を、楕円曲線を使う方法で完成させた。素数の記録を集めるPrime Pagesの一覧では、この方法で証明された素数の1位にある。もっともPrime Pagesは、楕円曲線法の証明書までは自ら確かめていないと断っている。同じ数にAKSを使うと、を超えるが要り、係数1個が約45キロバイトなので、多項式を1つ書き留めるだけで約6ペタバイトになる(当サイトの見積もり)。(出典: The Prime Pages「Elliptic Curve Primality Proof」・「R(109297)」)
  • 2026年 ラヘレ・ジャラリ(バース大学)とオンドジェイ・イェジル(カレル大学): AKSの正しさを、有界算術の体系の中で証明し、『Forum of Mathematics, Sigma』に発表した。途中では、フェルマーの小定理を多項式に広げた形を公理として置き、のちにそれが体系の中で証明できることを示している。の大きさを抑えるのに使う最小公倍数の評価も、さらに弱い体系で証明した。(出典: Jalali, Ježil「Feasibility of Primality in Bounded Arithmetic」arXiv:2504.17041、Forum Math. Sigma 14 (2026), e49)

561は今も、互いに素などの底で試しても、フェルマーの判定に素数と答えさせる。それでもをで割れば、374という係数が残る。

参考文献

  1. M. Agrawal, N. Kayal, N. Saxena, "PRIMES is in P", Annals of Mathematics 160 (2004), no. 2, 781-793. 原稿は2002年8月6日付の版と最終版。
  2. W. R. Alford, A. Granville, C. Pomerance, "There are infinitely many Carmichael numbers", Annals of Mathematics 139 (1994), 703-722. R. D. Carmichael, "Note on a new number theory function", Bulletin of the AMS 16 (1910), 232-238. A. Korselt, "Problème chinois", L'Intermédiaire des mathématiciens 6 (1899), 142-143.(フェルマーの1640年の手紙は2の序文、コルセルトの書誌は2の文献表による)
  3. G. L. Miller, J. Comput. System Sci. 13 (1976), 300-317. M. O. Rabin, J. Number Theory 12 (1980), 128-138. R. Solovay, V. Strassen, SIAM J. Comput. 6 (1977), 84-86. L. M. Adleman, C. Pomerance, R. S. Rumely, Annals of Mathematics 117 (1983), 173-206.(書誌は1の文献表による)
  4. H. W. Lenstra Jr., C. Pomerance, "Primality testing with Gaussian periods", J. Eur. Math. Soc. 21 (2019), 1229-1269. C. Pomerance, "Primality testing: then and now"(2018年の講演資料).
  5. NIST, FIPS 186-5 Digital Signature Standard(DSS)(2023年2月3日), Appendix B.3, Table B.1.
  6. N. Saxena, Résumé. M. Agrawal, Awards & Fellowships・Students. EATCS, Gödel Prize.
  7. R. Baillie, A. Fiori, S. S. Wagstaff Jr., Math. Comp. 90 (2021), no. 330. R. Jalali, O. Ježil, Forum of Mathematics, Sigma 14 (2026), e49. The Prime Pages, R(109297)(2025年5月26日登録).

注

  1. 英文は、クヌース『The Art of Computer Programming』第2巻の訳を、2002年8月6日付の原稿が引いたもの。和訳は当サイトによる。原文は1801年の『整数論の研究(Disquisitiones Arithmeticae)』にある。 ↩

タグ

この記事は、人が監修しながらAIを活用して執筆した。執筆・監修: 佐々木 航(株式会社Game)。

姉妹サイト

株式会社Game が運営するメディアです。