
数学において、ユークリッドの互除法([注1 ]またはユークリッドの互除法)は、2 つの整数の最大公約数(GCD)、つまり両方の整数を割り切れる最大の数を計算する効率的な方法です。これは、紀元前300 年頃に著書『原論』で初めてこの互除法を記述した古代ギリシャの数学者ユークリッドにちなんで名付けられました。これはアルゴリズムの一例であり、一般的に使用されている最も古いアルゴリズムの 1 つです。分数を最も簡単な形に約分するために使用でき、他の多くの数論的および暗号学的計算の一部となっています。
ユークリッドの互除法は、2 つの数の最大公約数は、大きい方の数を小さい方の数との差に置き換えても変わらないという原理に基づいています。たとえば、21は252と105の最大公約数です( 252 = 21 × 12、105 = 21 × 5 )。また、同じ数21は105と252 − 105 = 147の最大公約数でもあります。この置き換えによって大きい方の数が小さくなるため、このプロセスを繰り返すと、2 つの数が等しくなるまで、より小さい数のペアが次々と得られます。そうなったとき、その数が元の 2 つの数の最大公約数になります。手順を逆にするか、拡張ユークリッドの互除法を使用すると、最大公約数は、元の 2 つの数の線形結合、つまり、2 つの数にそれぞれ整数を掛けた和として表すことができます(たとえば、21 = 5 × 105 + (−2) × 252 )。最大公約数が常にこのように表現できるという事実は、ベズーの恒等式として知られています。
ユークリッドのアルゴリズムの上記バージョン(ユークリッドのオリジナルの表現に従うもの)では、与えられた数の一方が他方よりはるかに大きい場合、最大公約数を求めるのに多くの減算ステップが必要になることがあります。より効率的なアルゴリズムでは、これらのステップを省略し、2つの数のうち大きい方を小さい方で割った余りで置き換えます(このバージョンでは、余りがゼロになるとアルゴリズムは停止します)。この改良により、アルゴリズムは小さい方の整数の桁数(10進数)の5倍を超えるステップを必要とすることはありません。これは1844年にガブリエル・ラメによって証明され(ラメの定理)[ 1 ] [ 2 ] 、計算複雑性理論の始まりとなりました。アルゴリズムの効率を向上させるための追加の方法は20世紀に開発されました。
ユークリッドの互除法には、理論的にも実践的にも多くの応用例があります。分数を最も簡単な形に簡約したり、モジュラー演算で除算を実行したりするのに用いられます。このアルゴリズムを用いた計算は、インターネット通信のセキュリティを確保するために使用される暗号プロトコルの一部であり、大きな合成数を因数分解することでこれらの暗号システムを破る方法にも用いられます。ユークリッドの互除法は、ディオファントス方程式を解くためにも使用できます。例えば、中国剰余定理に従って複数の合同式を満たす数を見つけたり、連分数を構成したり、実数の正確な有理数近似値を見つけたりするのに使用できます。最後に、ラグランジュの四平方定理や素因数分解の一意性など、数論の定理を証明するための基本的なツールとして使用できます。
元々のアルゴリズムは自然数と幾何長(実数)のみを対象としていましたが、19世紀にはガウス整数や1変数多項式など、他の種類の数にも一般化されました。これにより、ユークリッド領域などの現代的な抽象代数概念が生まれました。
ユークリッドの互除法は、2 つの自然数aとbの最大公約数 (GCD) を計算します。最大公約数gは、 aとbの両方を割り切る最大の自然数です。GCD の同義語には、最大公約数(GCF)、最高公約数(HCF)、最高公約数(HCD)、最大公約数(GCM) などがあります。最大公約数は、gcd( a , b )または、より単純に( a , b )と表記されることが多いですが、[ 3 ]後者の表記は曖昧で、GCD と密接に関連する整数環のイデアルなどの概念にも使用されます。
gcd( a , b ) = 1の場合、aとbは互いに素である(または相対的に素である)と言われます。 [ 4 ]この性質は、aまたはb自体が素数であることを意味するものではありません。[ 5 ]例えば、6と35は6 = 2 × 3および35 = 5 × 7と因数分解されるため、素数ではありませんが、素因数が異なるため、6と35は互いに素であり、 1以外の共通因数はありません。

g = gcd( a , b )とする。aとb はどちらもgの倍数であるため、a = mgおよびb = ngと書くことができ、これを満たすgより大きい数Gは存在しない。自然数mとn は互いに素でなければならない。なぜなら、 mとnから共通因数を因数分解するとgが大きくなるからである。したがって、 aとb の両方を割り切る他の数cは、 gも割り切る必要がある。 aとbの最大公約数gは、他の公約数cで割り切れるaとbの唯一の (正の) 公約数である。[ 6 ]
最大公約数は次のように視覚化できます。[ 7 ] a × bの長方形領域と、aとbの両方を割り切る任意の公約数cを考えます。長方形の辺は長さcのセグメントに分割でき、これにより長方形は辺の長さcの正方形のグリッドに分割されます。最大公約数gは、これが可能なcの最大値です。例として、24×60 の長方形領域は、 1×1 の正方形、2×2 の正方形、3×3 の正方形、4×4の正方形、 6×6の正方形、または12×12の正方形のグリッドに分割できます。したがって、12は24と60の最大公約数です。24 ×60の長方形領域は、 12×12の正方形のグリッドに分割でき、1 つの辺に 2 つの正方形 ( 24/12 = 2 )、もう 1 つの辺に 5 つの正方形 ( 60/12 = 5 ) があります。
2 つの数aとbの最大公約数は、2 つの数に共通する素因数の積であり、各素因数はaとbの両方を割り切る回数だけ繰り返されます。[ 8 ]例えば、1386は2 × 3 × 3 × 7 × 11に因数分解でき、3213 は3 × 3 × 3 × 7 × 17に因数分解できるので、 1386と3213の最大公約数は63 = 3 × 3 × 7となり、これは共通する素因数の積です ( 3 × 3は両方を割り切るので 3 が繰り返されます)。2 つの数に共通の素因数がない場合は、最大公約数は1 (ここでは空の積の例として得られます) になります。言い換えれば、それらは互いに素です。ユークリッドのアルゴリズムの重要な利点は、素因数を計算する必要なく効率的に最大公約数を見つけることができることです。[ 9 ] [ 10 ]大きな整数の因数分解は計算上非常に困難な問題であると考えられており、広く使用されている多くの暗号プロトコルのセキュリティは、その実現不可能性に基づいています。[ 11 ]
最大公約数の別の定義は、特に環論などの高度な数学において役立ちます。[ 12 ] 2 つのゼロでない数aとbの最大公約数gは、それらの最小の正の整数線形結合でもあります。つまり、 uとv が整数である形式のua + vbの最小の正の数です。aとbのすべての整数線形結合の集合は、実際にはgのすべての倍数( mg、ここでmは整数)の集合と同じです。現代の数学用語では、 aとbによって生成されるイデアルは、 gのみによって生成されるイデアルです(単一の要素によって生成されるイデアルは主イデアルと呼ばれ、すべての整数のイデアルは主イデアルです)。実際、この説明によって、最大公約数のいくつかの性質が理解しやすくなります。たとえば、aとbの任意の共通約数が最大公約数を割り切る ( ua + vbの両方の項を割り切る) という事実などです。この最大公約数の定義と他の定義との等価性については、以下で説明します。
3 つ以上の数の最大公約数は、すべての数に共通する素因数の積に等しいが、[ 13 ] 2 つの数の最大公約数を繰り返し取ることによっても計算できる。[ 14 ]例えば、
したがって、2つの整数の最大公約数を計算するユークリッドの互除法は、任意の数の整数の最大公約数を計算するのに十分である。
a = 1071 ; b = 462 a = 119 ; b = 61
-1ユークリッドの互除法は、与えられた2つの整数から始まる非負整数の列を構築するものと考えることができる。そしてそして最終的には整数ゼロで終了します。と整数すると最大公約数となり、次のように述べることができます。このアルゴリズムは、中間剰余を構築する方法を示しています。前のペアに対する剰余除算によって整数商を求めることによってとなることによって:
非負整数の列であるためは厳密に減少するので、最終的には終了しなければなりません。言い換えれば、すべてのそしてそれぞれは、前の整数より厳密に小さい整数です。最終的にはゼロより小さい非負整数は存在し得ないため、アルゴリズムは終了しなければなりません。実際、アルゴリズムは常にn番目のステップで終了します。ゼロに等しい。[ 15 ]
例として、1071と462の最大公約数が要求されたとします。シーケンスは最初はそして見つけるために整数を見つける必要がありますそしてすなわち、以下の通りである。
これは商です以来これは決定しますそしてシーケンスは次のステップは、シーケンスを続けて見つけることです整数を見つけることによってそしてすなわち、以下の通りである。
これは商です以来これは決定しますそしてシーケンスは次のステップは、シーケンスを続けて見つけることです整数を見つけることによってそしてすなわち、以下の通りである。
これは商です以来これは決定しますそしてシーケンスは次のように完了しますより小さい非負整数は存在しない見つけることができる。最後から2番目の残りしたがって、要求されたGCDは次のとおりです。
最初の2つの値に対する順序付けの要件をなくすことで、少し一般化することができます。そしてもしアルゴリズムは継続し、自明に次のことを見つけるかもしれない。余りのシーケンスは次のようになりますもしそうすれば、次の余りはそれ自体、そしてそのシーケンスは通常、これは要件に違反するため無効となる。しかし今、私たちは構成上、要件は自動的に満たされ、ユークリッドのアルゴリズムは通常どおり続行できます。したがって、最初の 2 つの整数間の順序を削除しても、次の剰余が常に条件を満たすため、数列が最終的に終了するという結論には影響しません。そしてすべては上記のとおり続きます。唯一変更する必要があるのは次の点です。のみそして、非負整数の部分列のために厳密に減少するため除外する両方の発言から。
ステップの存在そのため条件から導かれる、 のためにこれにより、アルゴリズムが確実に終了することが保証されます。
最後のゼロ以外の剰余等しい以下の性質から導かれる
1.すべての。
2.
さて、ユークリッドアルゴリズムはペアから始まります。そして各ステップで、余りのペアに置き換えられます特性2は、ペアの は不変のままです。特に、最初のペアのうちそして最後のペア同じです。プロパティ1を適用すると、。

例として、ユークリッドの互除法を用いて、 a = 1071とb = 462の最大公約数を求めることができます。まず、1071から462の倍数を引いていき、余りが462未満になるまで続けます。このような倍数を 2 つ引くと ( q 0 = 2 )、余りは147になります。
次に、 462から147の倍数を引いていき、余りが147未満になるまで続けます。3つの倍数を引くことができます(q1 = 3)。余りは21です。
次に、余りが21未満になるまで、147から21の倍数を引いていきます。7つの倍数を引くことができます(q2 = 7)。余りは出ません。
最後の余りがゼロなので、アルゴリズムは1071と462の最大公約数として21で終了します。これは、上記の素因数分解で得られたgcd(1071, 462)と一致します。表形式で手順を以下に示します。
ユークリッドの互除法は、最大公約数について上述したタイル張りのアナロジーで視覚化できます。[ 16 ] a × bの長方形を正方形タイルで完全に覆うことを希望するとします。ここで、 a は2 つの数のうち大きい方です。まず、 b × bの正方形タイルを使用して長方形をタイル張りしようとします。しかし、これにより、 r 0 < bであるr 0 × bの残りの長方形がタイル張りされずに残ります。次に、残りの長方形をr 0 × r 0 の正方形タイルでタイル張りしようとします。これにより、2 番目の残りの長方形r 1 × r 0が残ります。これをr 1 × r 1の正方形タイルでタイル張りしようとします。以下同様です。この手順は、残りの長方形がなくなったとき、つまり、正方形タイルが前の残りの長方形を完全に覆ったときに終了します。最小の正方形タイルの辺の長さは、元の長方形の寸法の最大公約数です。例えば、隣の図の最小の正方形タイルは21×21(赤色で表示)であり、21は元の長方形の寸法である1071と462の最大公約数(緑色で表示)です。
ユークリッドアルゴリズムは、各ステップkにおいて、 2 つの数r k −1とr k −2から商q kと余りr kを計算します。
ここで、r kは非負であり、r k −1の絶対値より厳密に小さい。ユークリッド除法の定義の基礎となる定理は、このような商と余りが常に存在し、一意であることを保証する。[ 17 ]
ユークリッドのアルゴリズムの原版では、商と余りは繰り返し減算によって求められます。つまり、r k −1をr k −2から繰り返し減算し、余りr k がr k −1より小さくなるまで続けます。その後、 r kとr k −1を交換し、このプロセスを繰り返します。ユークリッド除法では、2 つの交換間のすべてのステップを 1 つのステップに減らすことができるため、より効率的です。さらに、商は必要ないため、ユークリッド除法を剰余演算に置き換えることができます。剰余演算では余りのみが得られます。したがって、ユークリッドのアルゴリズムの反復は単純に次のようになります。
アルゴリズムの実装は擬似コードで表現できます。たとえば、除算ベースのバージョンは次のようにプログラムできます[ 18 ]
関数gcd(a, b) while b ≠ 0 t := b b := a mod b a := t を返す
k番目の反復の開始時、変数b には最新の剰余r k −1が格納され、変数aにはその前の剰余r k −2が格納されます。ステップb := a mod bは、上記の再帰式r k ≡ r k −2 mod r k −1と同等です。一時変数tには、次の剰余r kが計算されている間、 r k −1の値が格納されます。ループ反復の終了時、変数bには剰余r kが格納され、変数aにはその前の剰余r k −1が格納されます。
(負の入力が許容される場合、またはmod関数が負の値を返す可能性がある場合は、最後の行を に置き換える必要がありますreturn abs(a)。)
ユークリッドのオリジナル版である減算ベースのバージョンでは、余りの計算()が繰り返し減算に置き換えられます。[ 19 ]任意の整数を入力として扱う除算ベースのバージョンとは異なり、減算ベースのバージョンでは入力が正の整数で構成され、a = bのときに停止します。b := a mod b
関数gcd(a, b) a ≠ b の間a > bの場合 a := a − b それ以外 b := b − a を返す
変数aとb は、前の剰余r k −1とr k −2を交互に保持します。反復の開始時にaがbより大きいと仮定すると、 r k −2 > r k −1なので、a はr k −2に等しくなります。ループの反復中、a は前の剰余bの倍数で減算され、 a がbより小さくなるまで続きます。すると、aは次の剰余r kになります。次に、bはaの倍数で減算され、再びaより小さくなると、次の剰余r k +1が得られ、以下同様に続きます。
再帰バージョン[ 20 ]は、連続する剰余の最大公約数の等価性と停止条件gcd( rN - 1,0 )= rN - 1に基づいています。
関数gcd(a, b) b = 0 の場合はa を返す、それ以外の場合は gcd(b, a mod b)を返す
(上記と同様に、負の入力が許容される場合、またはmod関数が負の値を返す可能性がある場合は、命令return aを に置き換える必要がありますreturn max(a, −a)。)
例として、gcd(1071, 462)は、同等のgcd(462, 1071 mod 462) = gcd(462, 147)から計算されます。後者の GCD は、gcd(147, 462 mod 147) = gcd(147, 21)から計算され、これはさらにgcd(21, 147 mod 21) = gcd(21, 0) = 21から計算されます。
ユークリッドの互除法の別のバージョンでは、各ステップで得られる負の剰余が通常の正の剰余よりも小さい場合、商は1ずつ増加します。[ 21 ] [ 22 ]以前は、この方程式は
| r k −1 | > r k > 0と仮定した。しかし、別の負の剰余e kを計算することもできる。
r k −1 > 0または
r k −1 < 0の場合。
r k をe kに置き換えると、| e k | < | r k |のとき、ユークリッドアルゴリズムの変種が得られ、
各段階で。
レオポルド・クロネッカーは、このバージョンがユークリッドの互除法のどのバージョンよりも少ないステップ数で済むことを示した。[ 21 ] [ 22 ]より一般的には、任意の入力数aとbに対して、ステップ数が最小となるのは、q k が次のように選択される場合に限ることが証明されている。どこは黄金比である。[ 23 ]

ユークリッドの互除法は、一般的に使用されている最も古いアルゴリズムの 1 つです。[ 24 ]これは、ユークリッドの『原論』(紀元前 300 年頃)に登場し、特に第 7 巻(命題 1-2)と第 10 巻(命題 2-3)にあります。第 7 巻では、このアルゴリズムは整数に対して定式化されていますが、第 10 巻では、線分の長さに対して定式化されています。(現代の用法では、実数に対して定式化されたと言うでしょう。しかし、現代の用法で実数として表される長さ、面積、体積は同じ単位で測定されておらず、長さ、面積、体積の自然な単位はありません。実数の概念は当時知られていませんでした。)後者のアルゴリズムは幾何学的です。2 つの長さaとbの最大公約数は、 aとb を均等に測定する最大の長さgに対応します。言い換えれば、長さaとbは両方とも長さgの整数倍です。
このアルゴリズムは、おそらくユークリッドによって発見されたものではなく、彼は『原論』の中で以前の数学者たちの成果をまとめた。[ 25 ] [ 26 ]数学者で歴史家のBLファン・デル・ヴェルデンは、第7巻はピタゴラス派の数学者たちが書いた数論の教科書に由来すると示唆している。[ 27 ]このアルゴリズムは、おそらくクニドスのエウドクソス(紀元前375年頃)によって知られていた。 [ 24 ] [ 28 ]ユークリッドとアリストテレスの著作で専門用語ἀνθυφαίρεσις(アンテュファイレシス、逆数減算)が使われていることから判断すると、このアルゴリズムはエウドクソスよりもさらに古い時代に遡る可能性もある。[ 29 ] [ 30 ] [ 31 ]クロード・ブレジンスキーは、アレクサンドリアのパップスの発言を受けて、このアルゴリズムをテアイテトス(紀元前417年頃 - 紀元前369年頃)に帰属させている。[ 32 ]
数世紀後、ユークリッドのアルゴリズムはインドと中国でそれぞれ独立に発見されました[ 33 ]。主な目的は、天文学で発生したディオファントス方程式を解いたり、正確な暦を作成したりすることでした。5世紀後半、インドの数学者で天文学者のアーリヤバタは、このアルゴリズムを「粉砕機」と表現しました[ 34 ]。これはおそらく、ディオファントス方程式を解く際の有効性によるものと思われます[ 35 ]。中国の剰余定理の特殊なケースは、すでに中国の書籍『孫子算経』で記述されていましたが[ 36 ]、一般的な解法は秦九韶が1247年に著した『数書九章』で発表されました。[ 37 ]ユークリッドの互除法は、バシェの『楽しくて面白い問題』(Problèmes plaisants et délectables、1624 年)の第 2 版で初めて数値的に記述され、ヨーロッパで普及しました。 [ 34 ]ヨーロッパでは、ディオファントス方程式を解いたり、連分数を展開したりするためにも同様に使用されました。拡張ユークリッドの互除法は、イギリスの数学者ニコラス・サンダーソンによって発表され、[ 38 ]彼はそれをロジャー・コーツに帰属させ、連分数を効率的に計算する方法としました。[ 39 ]
19 世紀には、ユークリッドの互除法によって、ガウス整数やアイゼンシュタイン整数などの新しい数体系が開発されました。1815 年、カール ガウスはユークリッドの互除法を用いてガウス整数の一意因数分解を実証しましたが、彼の研究が最初に発表されたのは 1832 年でした。[ 40 ]ガウスは、著書『算術研究』 (1801 年出版)の中でこのアルゴリズムに言及していますが、それは連分数の方法としてのみです。[ 33 ]ピーター グスタフ ルジューヌ ディリクレは、ユークリッドの互除法を数論の基礎として最初に記述した人物のようです。[ 41 ]ルジューヌ ディリクレは、一意因数分解などの数論の多くの結果が、ユークリッドの互除法を適用できる他の数体系にも当てはまることを指摘しました。[ 42 ]ルジューヌ・ディリクレの数論講義は、リヒャルト・デデキントによって編集・拡張され、彼はユークリッドの互除法を用いて、新しい一般的な種類の数である代数的整数を研究した。例えば、デデキントはガウス整数の一意因数分解を用いてフェルマーの二乗定理を初めて証明した。 [ 43 ]デデキントはまた、ユークリッド領域の概念を定義した。これは、ユークリッドの互除法の一般化されたバージョンを定義できる数体系である(以下で説明する)。19 世紀末の数十年間で、ユークリッドの互除法は、デデキントのより一般的なイデアル理論によって徐々に影を潜めていった。[ 44 ]
「ユークリッドの互除法は、あらゆるアルゴリズムの元祖である。なぜなら、それは今日まで生き残った最も古い非自明なアルゴリズムだからだ。」
ユークリッドの互除法の他の応用は19世紀に開発された。1829年、チャールズ・シュトゥルムは、このアルゴリズムが任意の区間における多項式の実根を数えるシュトゥルム連鎖法に有用であることを示した。 [ 45 ]
ユークリッドの互除法は、同値な実数間の整数関係を見つける方法である最初の整数関係アルゴリズムでした。ヘラマン・ファーガソンとRWフォーケードのアルゴリズム(1979)[ 46 ]やLLLアルゴリズム[ 47 ] [ 48 ]など、いくつかの新しい整数関係アルゴリズムが開発されました。
1969年、コールとデイヴィーは、ユークリッドのアルゴリズムに基づいた2人用ゲーム「ユークリッドのゲーム」を開発しました[ 49 ] 。このゲームには最適な戦略があります[ 50 ] 。プレイヤーはa個とb個の石の2つの山からゲームを開始します。プレイヤーは順番に、大きい方の山から小さい方の山のm倍の石を取り除きます。したがって、2つの山がx個とy個の石で構成され、xがyより大きい場合、次のプレイヤーは大きい方の山をx個の石からx - my個の石に減らすことができます。ただし、後者は非負の整数です。勝者は、一方の山を0個の石に減らした最初のプレイヤーです[ 51 ] [ 52 ]。
ベズーの恒等式は、 2 つの整数aとbの最大公約数gは、元の 2 つの数aとbの線形和として表すことができると述べています。[ 53 ]言い換えれば、g = sa + tbとなるような整数sとt を常に見つけることができます。[ 54 ] [ 55 ]
整数sとt は、ユークリッドの互除法の等式の順序を逆にすることで、商q 0、q 1などから計算できます。 [ 56 ]最後から 2 番目の等式から始めると、g は商q N −1と、その前の 2 つの剰余r N −2およびr N −3で表すことができます。
これらの2つの余りは、同様に商と前の余りを用いて表現できます。
これらの式をr N −2とr N −3に代入して最初の式に代入すると、 gは剰余r N −4とr N −5の線形和として得られます。剰余をその前の式を含む式で代入するプロセスは、元の数aとbに到達するまで続けることができます。
すべての剰余r 0、r 1などを代入した後、最終的な方程式はg をaとbの線形和として表し、g = sa + tbとなります。
ユークリッドのアルゴリズム、ひいてはベズーの恒等式は、ユークリッド領域の文脈に一般化することができる。
ベズーの恒等式は、2 つの数aとbの最大公約数gのもう 1 つの定義を提供します。[ 12 ]任意の 2 つの整数uとvを含むすべての数の集合ua + vbを考えます。aとbは両方ともgで割り切れるので、集合内のすべての数はgで割り切れます。言い換えれば、集合内のすべての数はgの整数倍です。これは、 aとbのすべての公約数について真です。ただし、他の公約数とは異なり、最大公約数は集合の要素です。ベズーの恒等式により、u = sおよびv = tを選択するとgが得られます。集合のすべての要素はgで割り切れなければならないため、より小さい公約数は集合の要素にはなり得ません。逆に、ベズーの恒等式の整数sとtでu = msおよびv = mtを選択すると、gの任意の倍数mが得られます。これは、ベズーの恒等式にmを掛けることで確認できます。
したがって、すべての数ua + vbの集合は、gの倍数mの集合と等価です。言い換えれば、2 つの数 ( aとb ) の整数倍のすべての可能な和の集合は、 gcd( a , b )の倍数の集合と等価です。GCD は、 aとbのイデアルの生成元であると言われています。この GCD の定義は、主イデアル(単一の要素によって生成されるイデアル) と主イデアル領域(すべてのイデアルが主イデアルである領域) という現代の抽象代数概念につながりました。
この結果を利用すると、いくつかの問題を解決できます。[ 57 ]例えば、体積がaとbの 2 つの計量カップを考えます。最初のカップのu倍数と 2 番目のカップのv倍数を加算/減算することで、任意の体積ua + vbを測定できます。これらの体積はすべてg = gcd( a , b )の倍数です。
ベズーの恒等式の整数sとt は、拡張ユークリッドアルゴリズムを使用して効率的に計算できます。この拡張では、ユークリッドのアルゴリズムに 2 つの再帰方程式が追加されます[ 58 ]。
初期値とともに
この再帰を用いると、ベズーの整数sとtはs = s Nおよびt = t Nで与えられ、N + 1はアルゴリズムがr N +1 = 0で終了するステップである。
このアプローチの妥当性は帰納法によって示すことができる。アルゴリズムのステップk − 1まで再帰式が正しいと仮定する。言い換えれば、
k未満のすべてのjに対して。アルゴリズムのk番目のステップは次の式を与える。
漸化式はr k −2およびr k −1に対して正しいと仮定されているため、それらは対応するsおよびt変数で表すことができる。
この式を整理すると、ステップkの漸化式が得られます。
整数sとtは、同等の行列法を用いて求めることもできる。[ 59 ]ユークリッドの互除法の式列
2×2の商行列と2次元の剰余ベクトルの積として表すことができる。
Mを全ての商行列の積とします。
これにより、ユークリッドの互除法は次の形式に簡略化されます。
g をaとbの線形和として表すには、この等式の両辺に行列Mの逆行列を掛ければよい。[ 59 ] [ 60 ] Mの行列式は(−1) N +1に等しい。これは、商行列の行列式の積に等しく、それぞれの行列式はマイナス 1 である。M の行列式は決してゼロにならないため、最終的な剰余のベクトルはMの逆行列を用いて解くことができる。
上の式は
ベズーの恒等式の 2 つの整数は、s = (−1) N +1 m 22およびt = (−1) N m 12です。行列法は、ユークリッドアルゴリズムの各ステップで 2 つの乗算と 2 つの加算を行う同等の漸化式と同じくらい効率的です。
ベズーの等式は、数の素因数分解の一意性を示すなど、ユークリッドの互除法の多くの応用において不可欠です。 [ 61 ]これを説明するために、数L が2 つの因数uとvの積、つまりL = uvと書けるとします。別の数wもL を割り切り、 uと互いに素である場合、次の議論により、 w はvを割り切らなければなりません。uとwの最大公約数が1である場合、整数sとtが存在し、
ベズーの恒等式により、両辺にvを掛けると次の関係式が得られる。
w は右辺の両項を割り切るので、左辺のvも割り切るはずです。この結果はユークリッドの補題として知られています。[ 62 ]具体的には、素数がL を割り切る場合、少なくともLの 1 つの因数を割り切るはずです。逆に、数wが数列a 1、a 2、 ...、a nのそれぞれと互いに素である場合、wはそれらの積a 1 × a 2 × ... × a nとも互いに素です。[ 62 ]
ユークリッドの補題は、すべての数が素数に一意に分解できることを証明するのに十分である。[ 63 ]これを示すために、逆に、Lがそれぞれm 個とn個の素因数に独立に分解できると仮定する。
仮定により、各素数p はL を割り切るので、 q 個の因数のうちの 1 つも割り切れるはずです。また、各qも素数なので、 p = qでなければなりません。p個の因数で繰り返し割っていくと、各pには対応する素数qが存在することがわかります。2 つの素因数分解は、順序を除いて同一です。数を素数に一意に分解できることは、以下に示すように、数学的証明において多くの応用例があります。

ディオファントス方程式は、解が整数に限定される方程式であり、3世紀のアレクサンドリアの数学者ディオファントスにちなんで名付けられました。[ 64 ]典型的な線形ディオファントス方程式は、次の条件を満たす整数xとyを求めます。 [ 65 ]
ここで、 a、b、cは与えられた整数である。これは、モジュラー演算におけるxの式として次のように表すことができる。
aとbの最大公約数をgとする。ax + byの両項はgで割り切れるので、cもgで割り切れなければならず、そうでなければこの方程式は解を持たない。両辺をc / gで割ると、この方程式はベズーの恒等式に帰着する。
ここで、sとtは拡張ユークリッドアルゴリズムによって求めることができる。[ 66 ]これにより、ディオファントス方程式の1つの解、x1 = s ( c / g )およびy1 = t ( c / g )が得られる。
一般に、線形ディオファントス方程式には解がないか、無限個の解が存在する。[ 67 ]後者を見つけるには、2つの解( x1 , y1 )と( x2 , y2 )を考える。
または同等に
したがって、2つのx解間の最小差はb / gであり、2つのy解間の最小差はa / gである。したがって、解は次のように表すことができる。
u をすべての可能な整数で変化させることで、単一の解( x 1 , y 1 )から無限の解の族を生成できます。解が正の整数( x > 0, y > 0)である必要がある場合、有限個の解しか存在しない可能性があります。この許容される解に対する制限により、方程式の数よりも未知数が多いディオファントス方程式のシステムの一部は有限個の解を持つことができます。[ 68 ]これは、解が任意の実数である線形方程式のシステムでは不可能です(不確定システムを参照)。
有限体とは、4 つの一般化された演算を持つ数の集合です。演算は加算、減算、乗算、除算と呼ばれ、交換法則、結合法則、分配法則などの通常の性質を持ちます。有限体の例としては、モジュラー演算を使用した13 個の数の集合{0, 1, 2, ..., 12}があります。この体では、任意の数学演算 (加算、減算、乗算、除算) の結果は、13を法として簡約されます。つまり、結果が0~12 の範囲内になるまで、13の倍数が加算または減算されます。たとえば、5 × 7 = 35 mod 13 = 9 です。このような有限体は、任意の素数pに対して定義できます。より高度な定義を使用すると、素数p mの任意のべき乗mに対しても定義できます。有限体はしばしばガロア体と呼ばれ、GF( p )またはGF( p m ) と略記されます。
m個の数からなるこのような体では、すべての非ゼロ要素a は、aa −1 = a −1 a ≡ 1 mod mとなる一意のモジュラー乗法逆元a −1を持ちます。この逆元は、合同方程式ax ≡ 1 mod m [ 69 ]または同等の線形ディオファントス方程式[ 70 ]を解くことによって見つけることができます。
この方程式は、上記のようにユークリッドの互除法で解くことができます。乗法逆元を見つけることは、電子商取引で広く使用されているRSA アルゴリズムの重要なステップです。具体的には、この方程式はメッセージを復号するために使用される整数を決定します。[ 71 ] RSA アルゴリズムは体ではなく環を使用しますが、乗法逆元が存在する場合は、ユークリッドの互除法を使用して乗法逆元を見つけることができます。ユークリッドの互除法は、誤り訂正符号にも他の用途があります。たとえば、ガロア体に基づくBCH 符号やリード・ソロモン符号を復号するためのBerlekamp–Massey アルゴリズムの代替として使用できます。 [ 72 ]
ユークリッドのアルゴリズムは、複数の線形ディオファントス方程式を解くためにも使用できます。[ 73 ]このような方程式は、整数xを表す新しい方法を記述する中国剰余定理に現れます。整数をその桁で表す代わりに、N 個の互いに素な数の集合m iを法とする剰余x iで表すことができます。[ 74 ]
目標は、N個の剰余x iからx を決定することです。解決策は、複数の方程式を、個々のモジュラスm iの積であるはるかに大きなモジュラスMを持つ単一の線形ディオファントス方程式に組み合わせ、M i を次のように定義することです。
したがって、各M i はm iを除く すべての法の積である。解は、次の条件を満たすN 個の新しい数h i を見つけることに依存する。
これらの数値h iを用いると、任意の整数x は、次の式によってその剰余x iから再構成できる。
これらの数h iはM iの乗法逆数であるため、前の節で説明したようにユークリッドの互除法を使用して求めることができます。
ユークリッドの互除法を用いると、すべての正の有理数の集合を、スターン・ブロコット木と呼ばれる無限二分探索木に整理することができます。 1 (分数 1/1 で表されます) を木の根元に配置し、他の任意の数a / bの位置は、ユークリッドの互除法の元の形式を用いて gcd( a , b )を計算することで見つけることができます。この方法では、各ステップで、与えられた 2 つの数のうち大きい方を小さい方との差 (余りではない) で置き換え、2 つの数が等しくなった時点で停止します。 2 つの数のうち最初の数を置き換えるユークリッドの互除法のステップは、木のノードからその右の子へのステップに対応し、2 番目の数を置き換えるステップは、木のノードからその左の子へのステップに対応します。このようにして構築されたステップのシーケンスは、a / b が既約分数で与えられているかどうかには依存せず、根元から数a / bを含むノードへのパスを形成します。[ 75 ]この事実は、この木の中に各正の有理数がちょうど一度だけ現れることを証明するために使用できる。
例えば、3/4は、根号から始めて、左に1回進み、次に右に2回進むことで求めることができます。

ユークリッドの互除法は、有理数上の別の二分木であるカルキン・ウィルフ木とほぼ同じ関係にある。違いは、経路が逆になっている点である。つまり、木の根から目標への経路を生成するのではなく、目標から根への経路を生成する。
ユークリッドの互除法は連分数と密接な関係がある。[ 76 ]一連の方程式は次の形式で記述できる。
右辺の最後の項は常に次の式の左辺の逆数に等しくなります。したがって、最初の 2 つの式を組み合わせて、次の式を作成できます。
3番目の式は分母項r 1 / r 0を置き換えるために使用でき、次の式が得られます。
最終的な剰余比r k / r k −1は、常に次の式を用いて、最終式まで置き換えることができます。結果は連分数になります。
上記の例では、gcd(1071, 462)が計算され、商q kはそれぞれ2、3、7でした。したがって、分数1071/462は次のように書くことができます。
計算によって確認できる。
最大公約数を計算することは、ポラードのローアルゴリズム[ 78 ] 、ショアのアルゴリズム[ 79 ]、ディクソンの因数分解法[ 80 ] 、レンストラ楕円曲線因数分解[ 81 ]など、いくつかの整数因数分解アルゴリズム[ 77 ]において不可欠なステップです。ユークリッドの互除法は、この最大公約数を効率的に見つけるために使用できます。連分数因数分解では、ユークリッドの互除法を使用して決定される連分数を使用します[ 82 ] 。

ユークリッドのアルゴリズムの計算効率は徹底的に研究されてきた。[ 83 ]この効率は、アルゴリズムが必要とする除算ステップの数に各ステップの計算コストを掛けたもので表すことができる。ユークリッドのアルゴリズムの最初の既知の分析は、 1811 年にAAL レイノーによるもので、[ 84 ]入力 ( u , v )の除算ステップの数はvで制限されることを示した。後に彼はこれをv /2 + 2 に改善した。その後、1841 年にPJE フィンクは[ 85 ]除算ステップの数は最大で 2 log 2 v + 1 であり、したがってユークリッドのアルゴリズムは入力のサイズの多項式時間で実行されることを示した。[ 86 ] 1837 年にエミール・レジェは、入力が連続するフィボナッチ数である場合の最悪のケースを研究した。[ 86 ]フィンクの分析は1844 年にガブリエル・ラメによって改良され、[ 87 ]完了に必要なステップ数は、小さい数bの 10 進数の桁数hの 5 倍を超えることはないことが示されました。[ 88 ] [ 89 ]
均一コストモデル(単一のマシンワードに収まる数の最大公約数計算の複雑さを分析するのに適している)では、アルゴリズムの各ステップは定数時間で実行され、ラメの分析によれば、全体の実行時間もO ( h ) となります。しかし、より大きな数での計算に適した計算モデルでは、アルゴリズム内の単一の剰余計算の計算コストは O ( h 2 ) にもなる可能性があります。[ 90 ]この場合、アルゴリズムのすべてのステップの合計時間は、テレスコープ級数を使用して分析でき、これもO ( h 2 ) であることが示されています。高速整数乗算のためのSchönhage–Strassen アルゴリズムに基づく最新のアルゴリズム技術を使用してこれを高速化することができ、最大公約数に対する準線形アルゴリズムにつながります。[ 91 ] [ 92 ]
2つの自然数aとbの最大公約数を計算するステップ数は、T ( a , b )で表される。 [ 93 ] gがaとbの最大公約数である場合、互いに素な 2 つの数mとnに対してa = mgおよびb = ng となる。
これは、ユークリッドアルゴリズムのすべてのステップをgで割ることによって確認できます。[ 94 ]同様の議論により、 aとbに共通因子wを掛けてもステップ数は変わりません。T ( a , b ) = T ( wa , wb )。したがって、ステップ数Tは、2 つの最大公約数の大きさに応じて、T( a , b ) と T( a , b + 1 ) のように、隣接する数のペア間で大きく変化する可能性があります。
ユークリッドの互除法の再帰的な性質により、別の式が得られる。
ここで、仮定によりT ( x , 0) = 0 である。 [ 93 ]
ユークリッドの互除法が、a > b > 0の自然数の組に対してNステップを必要とする場合、これが成り立つ最小のaとbの値は、それぞれフィボナッチ数F N +2とF N +1です。[ 95 ]より正確には、ユークリッドの互除法が、 a > bの組に対してNステップを必要とする場合、 a ≥ F N +2およびb ≥ F N +1が成り立ちます。これは帰納法で示すことができます。[ 96 ] N = 1の場合、b はa を割り切ります。これが成り立つ最小の自然数は、b = 1 およびa = 2 であり、それぞれF 2およびF 3です。ここで、この結果がM − 1までのすべてのNの値に対して成り立つと仮定します。Mステップのアルゴリズムの最初のステップはa = q 0 b + r 0であり、ユークリッドの互除法は、b > r 0の組に対してM − 1 ステップを必要とします。帰納法の仮定により、 b ≥ F M +1およびr 0 ≥ F Mが成り立つ。したがって、a = q 0 b + r 0 ≥ b + r 0 ≥ F M +1 + F M = F M +2となり、これが求める不等式である。1844年にGabriel Laméによって発表されたこの証明は、計算複雑性理論の始まり[ 97 ]であり、フィボナッチ数列の最初の実用的な応用でもある[ 95 ] 。
この結果から、ユークリッドのアルゴリズムのステップ数は、その桁数(10進数)の5倍を超えることは決してないことがわかる。[ 98 ]アルゴリズムがNステップを必要とする場合、bはF N +1以上であり、これはφ N −1以上である。ここでφは黄金比である。b ≥ φ N −1なので、N − 1 ≤ log φ bとなる。log 10 φ > 1/5なので、( N − 1)/5 < log 10 φ log φ b = log 10 bとなる。したがって、N ≤ 5 log 10 bとなる。したがって、ユークリッドのアルゴリズムは常にO ( h )未満の除算を必要とする。ここでhは小さい数bの桁数である。
ユークリッドアルゴリズムによって実行される平均ステップ数は、3つの異なる方法で定義されています。最初の定義は、与えられた数aと、0 からa − 1までの整数から等しい確率で選択されたより小さい自然数bの最大公約数を計算するのに必要な平均時間T ( a ) です[ 93 ]。
しかし、T ( a , b )は2つの数の最大公約数によって大きく変動するため、平均関数T ( a )も同様に「ノイズが多い」。[ 99 ]
このノイズを低減するために、 aと互いに素なすべての数について2 番目の平均τ ( a ) を取る。
aより小さい互いに素な整数はφ ( a ) 個存在する。ここでφはオイラーのトーシェント関数である。この τ の平均はaとともに滑らかに増加する[ 100 ] [ 101 ]
残差誤差はa −(1/6)+ εのオーダーであり、εは無限小である。この式の定数Cはポーター定数[ 102 ]と呼ばれ、
ここで、γはオイラー・マスケローニ定数、ζ ′はリーマンゼータ関数の導関数である。[ 103 ] [ 104 ]主係数 (12/π 2 ) ln 2 は、2 つの独立した方法で決定された。[ 105 ] [ 106 ]
最初の平均は、 aの除数dを合計することによって τ 平均から計算できるため[ 107 ]
3番目の平均Y ( n )は、 aとbの両方が1からnまでランダムに(一様分布で)選択されたときに必要なステップ数の平均値として定義されます[ 108 ]。
T ( a )の近似式をこの式に代入すると、 Y ( n )の推定値が得られます[ 110 ]
ユークリッドの互除法の各ステップkにおいて、与えられた整数の組r k −2とr k −1に対して、商q kと剰余r kが計算される。
各ステップの計算コストは主にq kを求めることに関連しており、残りのr k はr k −2、r k −1、およびq kから迅速に計算できる。
hビット数の除算の計算コストは O ( h ( ℓ + 1))に比例する。ここでℓは商の長さである。[ 90 ]
比較のために、ユークリッドの元の減算に基づくアルゴリズムは、はるかに遅くなる可能性があります。 1 つの整数除算は、商q個の減算に相当します。 aとbの比が非常に大きい場合、商は大きくなり、多くの減算が必要になります。 一方、商は小さな整数になる可能性が非常に高いことが示されています。 与えられた商qの確率は、おおよそln | u /( u − 1) |で、ここでu = ( q + 1) 2 です。[ 111 ]例として、商が 1、2、3、または 4 になる確率は、それぞれ約 41.5%、17.0%、9.3%、および 5.9% です。 特に大きな数の場合、減算の操作は除算よりも速いため、[ 112 ]減算に基づくユークリッドのアルゴリズムは、除算に基づくバージョンと競合します。[ 113 ]これはユークリッドのアルゴリズムのバイナリ版で利用されている。 [ 114 ]
推定ステップ数とステップあたりの推定計算コストを組み合わせると、ユークリッドのアルゴリズムは、最初の2つの数 a と b の平均桁数 h に対して2乗 (h 2 ) で増加することがわかります。h 0 、h 1 、 ... 、 h N −1は、連続する剰余r 0 、r 1、...、r N −1 の桁数を表します。ステップ数Nはhに対して線形に増加するため、実行時間は次のように制限されます。
ユークリッドの互除法は、その単純さから、特に小さな数に対して実用上広く用いられている。[ 115 ]比較のために、ユークリッドの互除法の代替法の効率を判定することができる。
2 つの自然数aとbの最大公約数を求める非効率的な方法の 1 つは、それらのすべての共通約数を計算することです。最大公約数は、最大の共通約数になります。共通約数は、両方の数を 2 から小さい数bまでの連続する整数で割ることによって見つけることができます。この方法の手順の数は、 bに対して線形に増加するか、桁数に対して指数関数的に増加します。もう 1 つの非効率的な方法は、一方または両方の数の素因数を見つけることです。前述のように、最大公約数は、2 つの数aとbに共通する素因数の積に等しくなります。[ 8 ]現在の素因数分解の方法も非効率的です。多くの最新の暗号システムは、その非効率性に依存しています。[ 11 ]
バイナリGCD アルゴリズムは、コンピュータで使用されるバイナリ表現を利用して除算をより高速な演算に置き換える効率的な代替手段です。 [ 116 ] [ 117 ]ただし、この代替手段もO ( h² )のようにスケーリングします。スケーリングは同じですが、実際のコンピュータでは一般的にユークリッドアルゴリズムよりも高速です。[ 91 ] 2 つの数aとbの先頭の桁のみを調べることで、さらに効率を高めることができます。[ 118 ] [ 119 ]バイナリ アルゴリズムは、他の基数 ( k進アルゴリズム)に拡張でき、[ 120 ]最大で 5 倍の速度向上を実現できます。[ 121 ]レーマーの GCD アルゴリズムは、バイナリ アルゴリズムと同じ一般的な原理を使用して、任意の基数で GCD 計算を高速化します。
非常に大きな整数 (25,000 桁以上) に対する再帰的アプローチは、準線形整数 GCD アルゴリズム[ 122 ]につながります。例えば、Schönhage [ 123 ] [ 124 ]や Stehlé と Zimmermann [ 125 ]のアルゴリズムなどです。これらのアルゴリズムは、上記のユークリッドアルゴリズムの 2×2 行列形式を利用します。これらの準線形メソッドは、一般的にO ( h log h 2 log log h ) のようにスケーリングします。[ 91 ] [ 92 ]
ユークリッドの互除法は、2 つの自然数 (正の整数) の最大公約数を求めるために使われますが、実数や、多項式 [ 126 ] や二次整数 [ 127 ]、フルヴィッツ四元数 [ 128 ] などの他の数学的対象にも一般化できます。後者の場合、 ユークリッドの互除法は、一意因数分解の重要な性質、つまり、そのような数は素数に対応する既約元に一意に因数分解できることを示すために使用されます。一意因数分解は、数論の多くの証明に不可欠です。
ユークリッドの互除法は、ユークリッドが『原論』第10巻で説明しているように、実数にも適用できます。この互除法の目的は、与えられた2つの実数aとbが整数倍となるような実数gを特定することです。つまり、 a = mg、b = ngとなります。ここで、 mとnは整数です。[ 25 ]この特定は、実数aとbの間に整数関係を見つけることと同等です。つまり、sa + tb = 0となるような整数sとtを決定します。このような等式が可能な場合、aとbは可換な長さと呼ばれ、そうでない場合は可換でない長さと呼ばれます。[ 129 ] [ 130 ]
実数ユークリッドアルゴリズムは、整数ユークリッドアルゴリズムとは2つの点で異なります。まず、剰余r kは実数ですが、商q kはこれまでと同様に整数です。次に、アルゴリズムは有限ステップ数Nで終了することが保証されていません。もし終了する場合、分数a / bは有理数、つまり2つの整数の比になります。
有限連分数[ q 0 ; q 1 , q 2 , ..., q N ]として表すことができます。アルゴリズムが停止しない場合、分数a / bは無理数であり、無限連分数[ q 0 ; q 1 , q 2 , …]で表すことができます。[ 131 ]無限連分の例としては、黄金比φ = [1; 1, 1, ...]と2 の平方根√ 2 = [1; 2, 2 , ...]があります。[ 132 ] 2 つの任意の実数に適用した場合、 2 つの実数の比a / bのほとんどすべてが無理数であるため、アルゴリズムが停止する可能性は低いです。 [ 133 ]
無限連分数はステップk [ q 0 ; q 1 , q 2 , ..., q k ]で打ち切ることができ、 kが増加するにつれて精度が向上するa / bの近似値が得られます。この近似値は収束式m k / n kで表され、分子と分母は互いに素であり、漸化式に従います。
ここで、m −1 = n −2 = 1およびm −2 = n −1 = 0は再帰の初期値です。収束するm k / n kは、分母n kを持つa / bの最良の有理数近似です。[ 134 ]
1変数xの多項式は、加算、乗算、因数分解によって既約多項式に分解することができ、これは整数の素数に相当するものです。2つの多項式a ( x )とb ( x )の最大公約数多項式g ( x )は、それらの共通既約多項式の積として定義され、これはユークリッドの互除法を用いて特定できます。[ 126 ]基本的な手順は整数の場合と同様です。各ステップkにおいて、再帰方程式を満たす商多項式qk ( x )と剰余多項式rk ( x )を特定します。
ここで、r −2 ( x ) = a ( x )およびr −1 ( x ) = b ( x )です。各商多項式は、各剰余がゼロであるか、または前の次数よりも小さい次数を持つように選択されます。すなわち、deg[ r k ( x )] < deg[ r k −1 ( x )]です。次数は非負の整数であり、ステップごとに減少するため、ユークリッドアルゴリズムは有限ステップで終了します。最後の非ゼロの剰余は、元の 2 つの多項式a ( x )とb ( x )の最大公約数です。[ 135 ]
例えば、それぞれが2つの2次多項式に因数分解される、次の2つの4次多項式を考えてみましょう。
a ( x )をb ( x )で割ると、剰余r 0 ( x ) = x 3 + (2/3) x 2 + (5/3) x − (2/3)が得られます。次のステップでは、b ( x )をr 0 ( x )で割ると、剰余r 1 ( x ) = x 2 + x + 2が得られます。最後に、r 0 ( x )をr 1 ( x )で割ると剰余がゼロになり、r 1 ( x )がa ( x )とb ( x )の最大公約数多項式であることが示され、因数分解と一致します。
整数について上述した多くの応用例は、多項式にも適用できます。[ 136 ]ユークリッドのアルゴリズムは、多項式の線形ディオファントス方程式や中国剰余問題を解くために使用できます。また、多項式の連分数も定義できます。
多項式ユークリッドアルゴリズムには、与えられた実数区間内にある多項式の零点の数を数える方法であるシュトゥルム連鎖などの他の応用例があります。[ 137 ]これはさらに、制御理論におけるラウス・フルヴィッツ安定性基準など、いくつかの分野に応用されています。[ 138 ]
最後に、多項式の係数は整数、実数、あるいは複素数から選ぶ必要はありません。例えば、係数は、上述の有限体GF( p )のような一般的な体から選ぶことができます。ユークリッドアルゴリズムとその応用に関する対応する結論は、そのような多項式に対しても成り立ちます。[ 126 ]

ガウス整数は、 α = u + viの形の複素数であり、uとvは通常の整数[注 2 ]、iはマイナス 1 の平方根です。[ 139 ]ユークリッドの互除法の類似物を定義することにより、上記の議論により、ガウス整数は一意に因数分解できることが示されます。[ 40 ]この一意の因数分解は、すべてのピタゴラス 3 組を導出したり、 2 つの平方数の和に関するフェルマーの定理を証明したりするなど、多くの応用で役立ちます。[ 139 ]一般に、ユークリッドの互除法はこのような応用で便利ですが、必須ではありません。たとえば、定理は他の議論によって証明できる場合がよくあります。
2 つのガウス整数αとβに対して開発されたユークリッドアルゴリズムは、通常の整数の場合とほぼ同じですが、[ 140 ] 2 つの点で異なります。これまでと同様に、 r −2 = αおよびr −1 = βと設定し、各ステップkでのタスクは、商q kと剰余r kを特定して、
ここで、すべての剰余は前の剰余よりも厳密に小さい: | r k | < | r k −1 |。最初の違いは、商と剰余自体がガウス整数であり、したがって複素数であることです。商q kは一般に、正確な比 (複素数α / βなど) の実部と複素部を最も近い整数に丸めることによって求められます。[ 140 ] 2 番目の違いは、ある複素剰余が別の複素剰余よりも「小さい」方法を定義する必要があることです。これを行うために、すべてのガウス整数u + viを通常の整数に変換するノルム関数f ( u + vi ) = u 2 + v 2が定義されます。ユークリッドアルゴリズムの各ステップkの後、剰余f ( r k )のノルムは、前の剰余f ( r k −1 )のノルムよりも小さくなります。ノルムは非負の整数であり、ステップごとに減少するため、ガウス整数に対するユークリッドアルゴリズムは有限ステップで終了します。[ 141 ]最終的な非ゼロの剰余はgcd( α , β )であり、 αとβの両方を割り切る最大のノルムを持つガウス整数です。これは、1、 ±1、または± iを掛ける場合を除き一意です。[ 142 ]
ユークリッドアルゴリズムの他の多くの応用はガウス整数にも適用できます。たとえば、ガウス整数の線形ディオファントス方程式や中国剰余問題を解くために使用できます。[ 143 ]ガウス整数の連分数も定義できます。[ 140 ]
加算と乗算という2つの二項演算の下にある要素の集合は、可換環Rを形成し、大まかに言えば、一般化されたユークリッドアルゴリズムを実行できる場合に、ユークリッド整域と呼ばれます。 [ 144 ] [ 145 ]このような環の2つの演算は、通常の算術の加算と乗算である必要はなく、数学群やモノイドの演算など、より一般的なものでも構いません。ただし、これらの一般的な演算は、可換性、結合性、分配性など、通常の算術を支配する多くの法則を尊重する必要があります。
一般化されたユークリッドアルゴリズムでは、ユークリッド関数、すなわち、 Rから非負整数の集合への写像fが必要であり、 R内の任意の 2 つの非ゼロ要素aとbに対して、 a = qb + rかつf ( r ) < f ( b )となるようなR内のqとrが存在する。[ 146 ]このような写像の例としては、整数の絶対値、1 変数多項式の次数、および以上のガウス整数のノルムがある。[ 147 ] [ 148 ]基本原理は、アルゴリズムの各ステップでfが必然的に減少することである。したがって、f が有限回しか減少できない場合、アルゴリズムは有限ステップで停止しなければならない。この原理は、非負整数の整列性に基づいている。整列性は、空でない非負整数の集合には最小の要素が存在すると主張する。[ 149 ]
算術の基本定理は、任意のユークリッド領域に適用されます。ユークリッド領域の任意の数は、一意に既約元に因数分解できます。任意のユークリッド領域は一意因数分解領域(UFD) ですが、その逆は真ではありません。[ 149 ]ユークリッド領域と UFD は、2 つの数の最大公約数が常に存在する領域であるGCD 領域のサブクラスです。 [ 150 ]言い換えれば、最大公約数は (領域内のすべての要素のペアについて) 存在する可能性がありますが、ユークリッドアルゴリズムを使用してそれを見つけることができない場合があります。ユークリッド領域は常に主イデアル領域(PID) であり、すべてのイデアルが主イデアルである整域です。[ 151 ]ここでも、その逆は真ではありません。すべての PID がユークリッド領域であるとは限りません。
ユークリッド領域の一意因数分解は、多くの応用において有用である。例えば、ガウス整数の一意因数分解は、すべてのピタゴラス三つ組の公式を導出したり、 2 乗の和に関するフェルマーの定理を証明したりするのに便利である。[ 139 ]一意因数分解は、ジョセフ・リウヴィルの提案に基づいてユークリッドのアルゴリズムの効率を分析したのと同じ数学者ガブリエル・ラメが 1847 年に発表したフェルマーの最終定理の証明の試みにおいても重要な要素であった。[ 152 ]ラメのアプローチでは、 x + ωyの形の数の一意因数分解が必要であった。ここで、xとyは整数であり、ω = e 2 iπ / nは 1 のn乗根、つまりω n = 1である。このアプローチは、 nの値によっては(例えばn = 3、アイゼンシュタイン整数など)成功するものの、一般にそのような数は一意に因数分解されない。一部の円分体における一意因数分解の失敗が、エルンスト・クンマーを理想数の概念へと導き、後にリヒャルト・デデキントをイデアルへと導いた。[ 153 ]

二次整数環は、ユークリッド領域を説明するのに役立ちます。二次整数は、虚数単位iを数ωに置き換えたガウス整数の一般化です。したがって、二次整数はu + vωの形をとります。ここで、uとvは整数であり、ω はパラメータDに応じて 2 つの形式のいずれかをとります。Dが4 の倍数 + 1 に等しくない場合、
しかし、Dが4プラス1の倍数に等しい場合、
関数f が、上記のガウス整数を順序付けるのに使われるようなノルム関数に対応する場合、その領域はノルムユークリッドとして知られています。 2 次整数のノルムユークリッド環は、 Dが −11、−7、−3、−2、−1、2、3、5、6、7、11、13、17、19、21、29、33、37、41、57、または 73 のいずれかの値である場合です。[ 154 ] [ 155 ] D = −1およびD = −3の場合、それぞれガウス整数とアイゼンシュタイン整数が得られます。
fが任意のユークリッド関数である場合、定義域がユークリッドとなるDの可能な値のリストはまだ知られていない。 [ 156 ]ノルムユークリッドではないユークリッド定義域の最初の例 ( D = 69 ) は 1994 年に発表された。[ 156 ] 1973 年に、ワインバーガーは、一般化されたリーマン予想が成り立つ場合、 D > 0の二次整数環が主イデアル定義域である場合に限りユークリッドであることを証明した。[ 127 ]
ユークリッドの互除法は、フルヴィッツ四元数集合のような非可換環にも適用できます。[ 128 ] [ 157 ] αとβをそのような環の2つの要素とします。環内のξとηを何らかの形で選択して、α = ξδかつβ = ηδであれば、共通の右約数δを持ちます。同様に、環内のξとηを何らかの形で選択して、α = dξかつβ = dηであれば、共通の左約数を持ちます。乗法は可換ではないため、ユークリッドの互除法には、右約数用と左約数用の2つのバージョンがあります。[ 128 ] [ 157 ]右約数を選択する場合、ユークリッドの互除法によるgcd( α , β )を求める最初のステップは次のように記述できます。
ここで、ψ 0 は商、ρ 0は剰余を表します。ここで、商と剰余は、(ゼロでない場合)剰余がN ( ρ 0 ) < N ( β )となるように選択されます。ここで、「ユークリッド関数」N は、非可換の場合のユークリッド領域のユークリッド関数と同様に定義されます。 [ 157 ]この式は、 αとβの任意の共通右約数が、同様に剰余ρ 0の共通約数であることを示しています。左約数に対する同様の式は次のようになります。
どちらの選択肢でも、最大公約数(右または左)が特定されるまで、上記の手順が繰り返されます。ユークリッド領域と同様に、剰余ρ 0の「サイズ」(正式にはそのユークリッド関数または「ノルム」)はβよりも厳密に小さくなければならず、ρ 0の可能なサイズは有限個しか存在しないため、アルゴリズムは必ず終了します。[ 158 ]
最大公約数に関する多くの結果は、非可換数にも適用できます。たとえば、ベズーの恒等式によれば、右最大公約数( α , β )はαとβの線形結合で表すことができます。[ 159 ]言い換えれば、σとτという数が存在し、
左最大公約数に関する同様の恒等式はほぼ同じである。
ベズーの恒等式はディオファントス方程式を解くために使用できます。たとえば、すべての正の整数は4つの平方数の和として表せるというラグランジュの4平方定理の標準的な証明の1つは、このようにして四元数の最大公約数に基づいています。[ 158 ]
おそらく小さい数の場合は二進法とユークリッドの互除法であり、大きい数の場合はレーマーの互除法かルベールの
k
項GCDアルゴリズムのいずれかである。
ここで扱うのは、与えられた区間内の多項式の実根の数を計算するために、ユークリッドの互除法を用いて関数とその導関数から定義される「シュトゥルム列」と呼ばれる関数群です。
ガウス整数に対する中国剰余定理の類似定理を述べ、証明せよ。