アルゴリズム論特論(塩田) 2020年度教材 第2回

  • 出席代わりに、塩田 ( shiota@is.kochi-u.ac.jp ) 宛てにメールを出してください。
  • 件名は「アルゴリズム論特論第2回出席」とでもしてください。
  • 内容は何でもいいです。

記号

  • この講義では、全ての整数から成る集合を $\ZZ$、すべての自然数から成る集合を $\NN$ と表すことにします。 $\NN$ には $0$ は入れないことにします。 N は natural number の N で、Z はドイツ語の ganze Zahl の Z です。
  • 今日は小文字のアルファベット $a$, $b$, $c$, $\cdots$ は全て整数を表すとします。

今日のテーマ

最大公約数と $ax+by$ の形の数

てんびんクイズ

 まず、次のクイズをやってみましょう。
クイズ 十分大きな天秤と、$a$ グラムと $b$ グラムの分銅がたくさんあるとき、測ることのできる最小の重さはいくらか?
  • $a=3$, $b=5$ のときは?
  • $a=5$, $b=7$ のときは?
  • $a=17$, $b=23$ のときは?
  • $a=6$, $b=10$ のときは?
 どうやらこんな予想ができそうです:

最大公約数 gcd と最小公倍数 lcm

 まずは $0$ についての注意から。
Rem.1
  • $0$ は全ての整数の倍数 ( $a \times 0 = 0$ ゆえ )
  • 任意の整数は $0$ の約数
$0$ との整除関係は日頃あまり意識しませんが、このように考えます。次は記号の定義
Def.2 (1) $a$, $b$ の共通の約数のうち最大の数を最大公約数と言い、$\gcd(a,b)$ と表す。
(2) $a$, $b$ の共通の倍数のうち、正で最小の数を最小公倍数と言い、$\mbox{lcm}(a,b)$ と表す。
ただし
  • $\gcd(a, b)$ は必ず 0 以上に定めます。
  • 片方が 0 のときは $\gcd(a, 0)=|\,a\,|$ となります。( Rem.2 より $|\,a\,|$ も $0$ の約数ゆえ。)
  • 両方が 0 のときは $\gcd(0, 0)=0$ と定めます。
    ( Rem.1 から任意の整数が $0$ の約数なので、$\infty$ となりそうに思いますが、こう約束すると後述の Th.6 が例外なく成立します。)
  • $\mbox{lcm}$ も両方が 0 のときは $\mbox{lcm}(0, 0)=0$ と定めます。
また、それぞれ何の略かと言うと
  • gcd = greatest common divisor
  • lcm = least common multiple
です。
Ex. $\gcd(-12, -21)=3$, $\gcd(0, -5) = 5$.
 最大公約数・最小公倍数は、公約数や公倍数の中の大小関係で定義しますが、次のように、 他の公約数・公倍数との間に整除関係を持つのが面白いところです。
Th.3 $a$, $b$ の任意の公倍数は $\mbox{lcm}(a,b)$ の倍数。
証明 $x$ を $a$, $b$ の任意の公倍数、$c=\mbox{lcm}(a,b)$ とします。 $x$ を $c$ で割って
$x = cq+r \qquad ( 0 \leqq r \lt c)$
とすると、
$r = x -cq$
であり、$x$ も $c$ も $a$, $b$ の公倍数ですから、$r$ も $a$, $b$ の公倍数となります。 もし $r \gt 0$ なら $c$ が最小の公倍数であることに反しますから $r=0$. よって $x=cq$ は $c$ の倍数になります。(証明終)
Th.4 $a$, $b$ の任意の公約数は $\gcd(a,b)$ の約数。
証明 $x$ を $a$, $b$ の任意の公約数とし、
$d=\gcd(a,b)$, $y=\mbox{lcm}(x,d)$
とします。
$x$ も $d$ も $a$, $b$ の公約数
   $\Rightarrow$  $a$ も $b$ も $x$, $d$ の公倍数
   $\Rightarrow$  $a$ も $b$ も $y$ の倍数 ( Th.3 より )
   $\Rightarrow$  $y$ は $a$, $b$ の公約数
   $\Rightarrow$  $y \leqq d$
他方、$y=\mbox{lcm}(x,d)$ は $d$ の倍数ですから $y \geqq d$ です。 $y \leqq d$ かつ $y \geqq d$ から $y=d$ となり、 すると $d=\mbox{lcm}(x,d)$ が成り立つので $x$ は $d$ の約数となります。 (証明終)

$ax+by$ の形の数

 てんびんクイズの予想を式で表すと
予想 $a$, $b$ が与えられたとき、ある $x$, $y$ が存在して $ax+by=\gcd(a,b)$ が成り立つ。
となります。そこで $ax+by$ の形の数の性質を調べることにしましょう。
Lemma 5 $\ZZ$ の、空でない部分集合 $G$ が加法と減法で閉じているとする。すなわち
$G$ の任意の要素 $a$, $b$ について $a+b \in G$ かつ $a-b \in G.$
このときある要素 $z \in G$ があって
$G=$ ( $z$ の倍数全ての集合 )
証明  $G=\{\,0\,\}$ であれば $z=0$ として Lemma が成り立ちますので、 以下、$G \neq \{\,0\,\}$ とします。
  1. $G$ の $0$ でない要素 $a$ を取ります。条件より
    $0 = a-a \in G.$
    再び条件より
    $-a=0-a\in G$
    となるので、$G$ は必ず正の要素を含みます。 そこで、$G$ の正の要素のうち最小のものを $z$ としましょう。
  2. $z$ の倍数は全て $G$ の要素になります。なぜならば、条件を繰り返し使うことにより
    $2z = z + z \in G$, $3z = (2z) + z \in G$, $\cdots$
    がわかり、そして 1. で示したように
    $0 = z-z \in G$, $(-m)z = -(mz) \in G$ ( $\forall m \in \NN$ )
    となります。
  3. 今度は、$G$ の全ての要素が $z$ の倍数であることを示しましょう。 $G$ の任意の要素を $x$ とし、$x$ を $z$ で割って
    $x = zq + r \qquad ( 0 \leqq r \lt z)$
    とします。2. と条件から
    $r = x - zq \in G$
    となりますが、もし $r \gt 0$ であれば $z$ の取り方(最小性)に矛盾しますので $r=0$ です。 すなわち $x=zq$ は $z$ の倍数になります。
以上、2° と 3° から $z$ の倍数全ての集合と $G$ が等しいことが言えました。(証明終)
Th.6 $a$, $b$ を固定し、$ax+by$ の形の数全ての集合を
$G=\{\,ax+by\,|\,x, y \in \ZZ\,\}$
とします。すると
$G=$ ( $\gcd(a,b)$ の倍数全ての集合 ).
証明  $a=b=0$ のときは $G=\{\,0\,\}$, $\gcd(a,b)=0$ ですので Th. は成り立ちます。 そこで、以下 $(a,b) \neq (0,0)$ とします。
  1. $(ax+by) \pm (ax'+by') = a(x \pm x') + b(y \pm y')$ ですから $G$ は La'5 の条件を満たします。 従って $G=$ ( $z$ の倍数全ての集合 ) となる正の要素 $z$ が存在します。
  2. $z \in G$ ですから $z$ 自身
    $z = ax+by$
    と書けます。$a$, $b$ は $\gcd(a,b)$ の倍数ですから $z$ も $\gcd(a,b)$ の倍数になります。
  3. 逆に
    $a = a \times 1 + b \times 0$, $\quad b = a \times 0 + b \times 1$
    は共に $G$ の要素ですから、$z$ の倍数になります。 つまり $z$ は $a$, $b$ の公約数ですから、Th.4 により $\gcd(a,b)$ の約数になります。
以上、2° と 3° から $z$ と $\gcd(a,b)$ が等しいことがわかります。よって 1. より
$G=$ ( $\gcd(a,b)$ の倍数全ての集合 )
であることが言えました。(証明終)
Cor.7 任意の $a, b \in \ZZ$ に対してある $x,y \in \ZZ$ が存在して
$\gcd(a,b)=ax+by$
が成り立つ。
Cor.8 てんびんクイズの答え $=\gcd(a,b)$.
Cor.9 $a$, $b\in\ZZ$ が与えられたとき、方程式
$ax+by =c$
が整数解 $(x,y)$ を持つことと、$c$ が $\gcd(a,b)$ の倍数であることが同値である。

互いに素

Def.10 $\gcd(a,b)=1$ のとき、$a$ と $b$ は互いに素であると言う。
「どちらも素数」という意味ではありません。恥ずかしいので間違えないように。
Th.11 $a$, $b$ が互いに素ならば
$ax+by=1$
を満たす $x$, $y$ が存在する。
Th.12 $a$, $b$ が互いに素、かつ $b \times c$ が $a$ の倍数ならば、$c$ が $a$ の倍数。
証明 Th.11 より $ax+by=1$ を満たす $x$, $y$ を取ると
$c = 1 \times c = (ax+by)c = a(cx) + (bc)y$
となり、$bc$ が $a$ の倍数ゆえ右辺は $a$ の倍数です。(証明終)

※ $\gcd$ や、Th.11 の $x$ が、RSA 暗号をはじめとする公開鍵暗号の設計でとても重要になります。

まとめ

  • 2つの整数 $a$, $b$ に対して次の2つの集合は一致する:
    • $a x + b y$ ( $x$, $y$ は整数 ) の形で書ける整数全体の集合
    • $\gcd(a, b)$ の倍数全体の集合
  • 特に、$a$, $b$ を与えたとき、$a x + b y = \gcd(a, b)$ を満たす $x$, $y$ が必ず存在する。
  • $a$, $b$ が互いに素ならば $a x + b y = 1$ を満たす $x$, $y$ が必ず存在する。

自宅学習の例

  • $a=7^5=16807$ と $b=11^4 = 14641$ に対して $ax+by=$ を満たす整数 $x$, $y$ をひと組みつけてみましょう。

戻る