tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

一次不定方程式と油分け算

またまた RSA 暗号の関連記事です。記事の中で「一次不定方程式」という概念が登場しましたので、その補足をしたいと思います。

一次不定方程式の整数解:
 a, b を互いに素な整数としたとき,以下の方程式を満たすような整数解  u, v が存在する.

 au + bv = 1

この一次不定方程式の整数解を求める問題、ちょっとだけとっつきにくい印象があるのですが、視点を考えれば非常にわかりやすくなることに気づきました。

実はこれ「油分け算」と言われる問題とまったく同じなのです。

油分け算とその解き方

「油分け算」って何だっけ?
と思う方でも、この問題は聞いたことがあるでしょう。

3ℓと 5ℓの升(マス)があります。
この2つの升を使って、1ℓの油を計り取ってください。

油分け算は「塵劫記」と呼ばれる江戸時代の数学書に登場した有名な問題です。当時は「数学」ではなく「和算」の時代でした。

よく使われる例題では、1ℓではなく 4ℓを計り取るものでしょう。結局、同じ問題であることが後で分かるので、まずは 1ℓから考えます。


ちょっと暗算すればわかります。

 3\times 3 = 9

と、

 5\times 2 = 10

は、差がちょうど  1 になります。したがって、 5ℓの升で  2 回計りとってできた  10ℓから、 3ℓの升で  3 回すくいだしてあげれば  1ℓのできあがりです。

油分け算は一次不定方程式で表せる

上で挙げた計算を数式で表してあげましょう。  a = 3,  b = 5 とおくと、

 a\cdot (-3) + b\cdot 2 = 1

となります。これは、上で述べた一次不定方程式の解に  u = -3, v = 2 を代入して出来た式に他なりませんね。


結局これで、「油分け算」と「一次不定方程式の整数解を求める問題」が等価であることがわかりました。

上の一次不定方程式は、大きさが  a,  b という二つの升を使って、 1 を計り取るためには、 a の升を  u 回、 b の升を  v 回使う必要があるということを意味しています。ただし、 u, v は正にも負にもなり得ますが、正の場合は「油をすくい加える」、負の場合は「油をすくい出す」ことに注意です。

図にすると、こんなイメージです。

f:id:tsujimotter:20150121010951p:plain:w320

3ℓと4ℓで「任意の整数ℓ」の油をつくる

ここで、冒頭で述べた「なぜ 4ℓをつくるのも 1ℓをつくるのも同じなのか」という点に触れておきましょう。「 1 ℓつくることができれば、 4 ℓもつくることができる」といった方が正確でしょう。

上の手順で  1 ℓを作ります。すると、式で表すとこうなりますね。

 a\cdot (-3) + b\cdot 2 = 1

ただし、 a = 3,  b = 5 としています。
ここで、両辺を  4 倍しましょう。すると、

 a\cdot (-12) + b\cdot 8 = 4

こうなります。この式の意味するところは、つまりこういうことです。
 b = 5 ℓの升で油を  8 回すくい加え,そこから  a = 3 ℓの升で油を  12 回すくい出せば,油  4 ℓが得られる」
したがって、 4 ℓが得られました。

同様に、 k ℓを作りたければ、両辺  k 倍すればよいわけですから、 3 ℓの升と   5 ℓの升を用意すれば、「任意の整数 ℓ」の油をつくることができますね。

最大公約数

 3ℓと  5ℓの升ではすべての整数をつくることができましたが、ほかの大きさの升だとどうでしょうか。
たとえば  8 14 では、「  2 の倍数」しか作れそうにありませんね。

これについては、すでに初等整数論によって結論が出ています。
最大公約数 (GCD) を使います。

最大公約数(GCD):
 a, b の共通の約数を公約数と呼ぶ. a, b の公約数の中で,最大のものを  a, b最大公約数と呼び, \gcd(a, b) あるいは単位  (a, b) のように表す.

最大公約数の例を挙げると、こんな感じです。

 \gcd(3, 5) = 1

 \gcd(8, 14) = 2

ちなみに、 a, b の最大公約数が  1 になるとき、 a b互いに素である、というように言います。上の例では、 3  5 は互いに素ですね。


この最大公約数を使うと、一次不定方程式に解が存在する条件は、以下のように表せます。

一次不定方程式の整数解(一般的な例):
 a, b を整数としたとき,以下の方程式を満たすような整数解  u, v が存在する.

 au + bv = \gcd(a, b)


冒頭でに挙げた例で、右辺が  1 となっていたのは、 a, b の最大公約数が  1、すなわち  a b が互いに素だったからなのですね。

ちなみに、 a = 8 b = 14 の例では、

 8u + 14v = 2

となって、たしかに 「  2 の倍数しか作れない」と言っていた、先ほどの直感とあっていますね。

おまけ:なぜ「一次不定方程式」と呼ぶの?

最後におまけとして、今回使った方程式が、なぜ「一次」「不定」方程式なのか、という点に触れて終わりたいと思います。

「一次」であるのは、方程式の解  u,  v の肩に 2乗や3乗のような指数がついていなくて、1乗になっているからです。こういう方程式を「一次方程式」と呼びますよね。


では、「不定」なのはなぜか。 a = 3, b = 5 としたときの一次不定方程式は、

 3u + 5v = 1

となりますね。

たとえば、方程式の解  u, v を整数に限らないとして、その解は1つに定まるでしょうか。定まりませんね。 u = 1 なら  v = -2/5 だし、 u = 2 なら  v = -1 です。片方が定まらないと、1つに決まりません。あるいは、連立方程式のように式を加えても良いかもしれませんが、式がもう1つないと定まりませんね。

このように、解が一意に定まらないような方程式を「不定」方程式と呼ぶのです。だから、「一次」「不定」方程式なのでした。


単なる不定方程式だったら、あまり意味のある結論は出ないのですが、もし「解を整数に限れば」ある程度秩序だった知見を導き出す事が出来ます。それが、一次不定方程式の「整数解」というわけです。

たとえば、先ほどの例だと、

 3u + 5v = 1

の方程式のままでは、単に  u v の関係を表しただけで、これ以上先に進めません。
もし解  u, v を整数に絞れば、

 u = -3+5k, \; v = 2-3k,ただし  k は整数

のように意味のある結論を導くことが出来ます。


以上、豆知識でした。今日はこの辺で終わりたいと思います。それでは。

関連記事

この文章を書くきっかけとなった記事です。RSA 暗号って整数論がぎっしり詰まっていますよね。

RSA 暗号がようやく分かった気がしたのでまとめてみる - tsujimotterのノートブック


ちょっと難度が上がりますが、最後の証明について関連する話が以下の記事に書いてありますので、興味を持った方はどうぞ。

独習ノート「素数と2次体の整数論」#3:Z のイデアル (2/2) - tsujimotterのノートブック