初等整数論/ユークリッドの互除法

この項目では、最大公約数を求めるアルゴリズムとその応用について述べる。

ユークリッドの互除法

編集

ユークリッドの互除法とは、ユークリッドが自著「原論」に記した、最大公約数を求めるアルゴリズムである。その根幹を成す定理は、次の定理である。

定理 1.7
編集
自然数 a, b が与えられたとき、除法の原理に基づき   とすると、 

証明
  とする。すると仮定より、  となる。このとき、  である。なぜなら、仮に  とすると、  となってこれを (1) に代入すれば   となり、公約数   が存在することになってしまい、矛盾するからである。

(0) に (1) を代入して、  となり、   の倍数。したがって、   の公約数。  とすると、定理 1.4 より、  となる。よって  

  とおけば、これを (0) へ代入して、  となり、   の倍数。したがって、   の公約数。したがって定理 1.5 より   となる。すなわち   これと (3) によって、  これらの数の定め方から、 

470 と 364 の最大公約数をユークリッドの互除法を繰り返し用いて求める。

 

よって最大公約数は 2 であることが分かる。ユークリッドの互除法では、余りの数が着実に 1 減っているので、無限降下列を作ることはできないという自然数の性質から、必ず有限回で終わることが分かる。

これを次は、余りを主体にして書きなおしてみる。

  とおく。

 

(1) を (2) に代入して、  これと (1) を (3) に代入して、

  これと (2) を (4) に代入して、

  これと (3) を (5) に代入して、

 

こうして、470, 364 の 最大公約数である 2 を、  と表すことができた。

一次不定方程式

編集

先ほど問題を一般化して、次の不定方程式を満たす数を全て求めるということを考える。

  が解を持つのはどんな場合か、解はどのように求めるか、を考察してゆく。

まずは証明をする前に、次の定理を証明する。

定理 1.8
編集

  ならば、   で割った余りは全て異なり、任意の余り   についても、   で割ると   余るような   が存在する。

証明
仮に、この中で同じものがあったとして、それらを   とおく。これらの余りは等しいのだから、 となる。定理 1.6 より、  だが、  より、   となり、矛盾。よって定理の前半は満たされ、定理の後半は鳩の巣原理によって難なく証明される。

定理 1.9
編集

  としたとき、  が解を持つには、  が必要十分条件である。

証明
一次不定方程式が解を持っていて、そのうちの一つを   とし、  とする。  より、   の倍数。よって必要条件である。

次に、  であるとする。  とおく。

すると、  となる。

ここで、  は互いに素である。仮に、  が解を持つならば、両辺を   倍することで (1) も解を持つ。なので   が解を持つことを証明すれば良い。

定理 1.8 より、   で割ると   余るような   が存在する。(※)

すなわち、  となり、解が存在する。

以上より、十分条件であることが証明され、必要十分条件であることが証明された。

ユークリッドの互除法を使って実際に解を構成することで証明することもできる。詳しくは次節を参照。


(※)について : この時点で正であるとしてしまっているが、負の場合もうまく符号操作することで正の場合に帰着することができるので、大した問題にはならない。

解法

編集

さて、定理 1.9 より、全辺を最大公約数で割れば、係数が互いに素な一次不定方程式に持ち込むことができる。ここで   に解   が存在して、  だったとする。ここで、  も解である。なぜなら、

 

となるからである。

逆に、他の解、  が存在するとき、  という形で書くことができる。なぜなら、

 

 

したがって、  となるが、  なので定理 1.6 より、  

さらに、(2) へ代入して   となり、これと (1) から、 

以上より、解を全て決定することができた。それらは、ある解  があったとき、  が全てである。

つまり、問題は、最初の解   をいかにして見つけるか、である。

そこで先ほどのユークリッドの互除法を用いた方法を応用する。まずは例として、  の解を求める。ユークリッドの互除法を用いて、

 

これを余り主体に書き直す。  とおく。

 

(1) を (2) に代入して  、これと (1) を (3) に代入して、 、これと (2) を (4) に代入して、 、これと (3) を (5) に代入して、 

となって、解が求まった。


今度はこれを一般化して考える。互いに素な2数   が与えられたとき、互除法を用いて、

 


ここで、  とおいてみると、

 

となり、これらを、  に代入して、

 

したがって、  

係数比較(※)して、 

初項と第二項は、(1), (2) より 

以上の結果をまとめると、

互いに素な二数   について、  の方程式の解は、ユークリッドの互除法によって得られる逐次商   を用いて、

 
 

で求められる。

※について : 係数を比較してこの式を導くのではなく、この式が成り立つならば先ほどの式も成り立つのは自明なのでこのように議論を展開しているのである。