正整数 の最大公約数(the greatest common divisor)を で表します. の計算方法として,ユークリッドの互除法がよく知られています.
ja.wikipedia.org
に対しては,\begin{align}am+bn=\mathrm{gcd}(m,n)\end{align}となる整数 が存在します(上記Wikipediaの「拡張された互除法」の項を参照).また, は共に の倍数なので,\begin{align}m=k\cdot \mathrm{gcd}(m,n),~~n=\ell\cdot\mathrm{gcd}(m,n)\end{align}となる自然数 が存在します.ユークリッドの互除法を利用して と約分を計算することが出来ますが,一旦 を計算して,それから を で割り算をするのは結構面倒に感じることがあります.
今回紹介するのは,ユークリッドの互除法の計算を一工夫することで上記の\begin{align}\mathrm{gcd}(m,n),a,b,k,\ell\end{align} を一度に全部に計算する方法です.
ユークリッドの互除法はイデアルの生成系の書き換え
正整数 に対するユークリッドの互除法は,数列 を
\begin{align}
\left\{
\begin{array}{l}
a_1=m,~ a_2=n,\\
a_{i+2}=(\mbox{$a_{i+1},~a_i$ の大きい方を小さい方で割った余り})
\end{array}
\right.
\end{align}と定義し,初めて となる直前の が となるというものですが,この記事では次のように定義します.
例えば の場合は\begin{align}
455,663 \longrightarrow 455,208 \longrightarrow 39, 208 \longrightarrow 39, 13 \longrightarrow 0,13
\end{align}といった具合で, が求まります.
同じ数を2回書くので表記としては冗長ですが,ユークリッドの互除法を「イデアルの生成系の書き換え」と解釈するとこのように書くことが妥当に思えます.
可換環 に対し, が生成するイデアルを \begin{align} \langle a_1,\dots,a_r\rangle=\{a_1x_1+\dots+a_rx_r \mid x_1,\dots,x_r \in R\}\end{align}と書くことにします.任意の に対し \begin{align}\langle a,b\rangle=\langle a, b-aq\rangle \end{align}であることが簡単に証明できます.このことから,ユークリッドの互除法の計算過程に現れる数のペアが生成する有理整数環 のイデアルは変わらないことが分かります.先ほどの を例に取ると\begin{align}
\langle 455,663\rangle = \langle 455,208 \rangle= \langle 39, 208 \rangle = \langle 39, 13 \rangle = \langle 13 \rangle
\end{align}となります.
これをちゃんと理解すると,ユークリッドの互除法の計算過程で正の数こだわる必要はなく,負の数を使ってもいいことが分かります.例えば
\begin{align}\langle 102,531\rangle=\langle 102,21\rangle=\langle -3,21\rangle=\langle 3\rangle\end{align}より というように計算できます.
また, なので となる整数 が存在することも自然に分かります.
アルゴリズム
と
\begin{gather}am+bn=\mathrm{gcd}(m,n)\\
m=k\cdot \mathrm{gcd}(m,n),~~n=\ell\cdot\mathrm{gcd}(m,n)
\end{gather}を満たす を一度に全て計算する方法を紹介しましょう.
方法自体は単純で という行列を用意して,第1列だけ見るとユークリッドの互除法になるように行基本変形していくだけです.
まず具体例を見てみます. と の場合,
この計算結果から, と の最大公約数は で,
であることが分かります (ガウスの消去法で逆行列を計算する方法と同じ考え方です).行列の第2行目 から
\begin{align}
(-16)\cdot 455+11\cdot 663=13
\end{align}であることが分かり,行列の第1列目 から, がそれぞれ最大公約数 の何倍であるかの情報
\begin{align}
455=13\times35,~~ 663=13\times 51
\end{align}が得られます.
定理の形にまとめておきます.
または
という形の行列になる( は整数).このとき と の最大公約数は であり \begin{gather}
a m+b n=g\\
m=|d| \cdot g,~~ n=|c|\cdot g
\end{gather}が成り立つ.
一応証明しておきましょう.
であることはユークリッドの互除法で最大公約数が求まることから分かります.第1列だけ見るとユークリッドの互除法になるように行基本変形をしていくということは,左から または という形の基本行列 (ただし は正整数) を掛けていくということです.いずれの場合も同様なので,最終的に となる場合だけを考えます.第2,3列からなる2次正方行列 は,初期状態が単位行列で,それに変形過程の行基本変形に対応する基本行列が左からかけられていったものなので,それらの基本行列の積になっています.
つまり, に左から を掛けると となるということです.
特に が成り立ちます.よって です.
また, が成り立っていますが,これは が syzygy加群\begin{align}
\mathrm{Syz}(m,n):=\{(r_1,r_2)\in \mathbb{Z}^2\mid r_1m+r_2n=0\}
\end{align}の元であることを示しています.syzygy加群 は で生成されます.このことから, の元 で を満たすものは の生成元である しかないことが分かります.
一方で は行列式が である行列の積なので,この行列自身の行列式も です.よって となります.これは であることを示しています.よって は の生成元であり, が成り立ちます.つまり となります.
応用
約分
第184回 数学検定 1級 1次:計算技能検定で出題された問題を解いてみましょう.
http://amateurmath.web.fc2.com/files/184-1-1.pdf
\begin{align}\frac{10033}{12877}\end{align}
行基本変形
より, \begin{align}\frac{10033}{12877}=\frac{127}{163} \end{align}
合同式での乗法逆元
第372回 数学検定 1級 1次:計算技能検定で出題された問題を解いてみましょう.
http://amateurmath.web.fc2.com/files/372-1-1.pdf
65x \equiv 3 ~(\mathrm{mod} ~79)\end{align}
行基本変形
より .\begin{align}
65x &\equiv 3 ~&(\mathrm{mod} ~79)\\
(-17)\cdot65x &\equiv (-17)\cdot3 ~&(\mathrm{mod} ~79)\\
x &\equiv -51 ~&(\mathrm{mod} ~79)\\
x &\equiv 28 ~&(\mathrm{mod} ~79)
\end{align}なので,条件を満たすものは .