【基礎 数学】Module 8: 整数問題の解法戦略
【概要】
数学の広大な領域の中で、整数は特別で、奥深い魅力を持つ分野です。実数が連続的な「線」の世界であるのに対し、整数は離散的な「点」の世界であり、そこには独特の法則と構造が支配しています。整数問題は、しばしば複雑な計算ではなく、隠れた構造を見抜き、論理の切れ味で本質を突く思考力を要求します。それはまるで、精巧な錠前を解き明かす鍵師の仕事にも似ています。本モジュールでは、この整数という神秘的な世界を探求するための、体系的な解法戦略を構築します。まず、すべての整数の設計図である素因数分解と、整数間の関係性を支配する除法と剰余の原理から始めます。次に、その原理を応用して一次不定方程式という整数世界の基本的な方程式を解き明かします。さらに、剰余に着目した強力な言語である合同式を導入し、フェルマーの小定理や中国剰余定理といった強力なツールを習得します。最後に、我々が数をどう表現しているかというn進法の原理に立ち返り、数の見方を多様化します。このモジュールを修了する時、あなたは整数問題に対し、力ずくで挑むのではなく、その構造を的確に分析し、最もエレガントな解法を選択する「整数問題の戦略家」となっているでしょう。
1. 整数の世界の原子と法則:素数と除法
整数論の壮大な体系は、二つの非常にシンプルかつ強力な概念、「素数」という構成要素(原子)と、「除法」という相互作用の法則の上に成り立っています。この二つの基礎を完全に理解することが、すべての整数問題へのアプローチの出発点となります。
1.1. 算術の基本定理:すべての整数のDNA
- 素数 (Prime Number):
- 2以上の自然数で、1とその数自身以外に正の約数を持たない数。(2,3,5,7,11,…)
- 素数は、これ以上分解できないという点で、物質における「原子」のような存在です。素数でない合成数は、素数の積として表現される「分子」に相当します。
- 素因数分解 (Prime Factorization):
- 合成数を素数の積の形で表現すること。 (例: 60=22⋅31⋅51)
- 算術の基本定理 (Fundamental Theorem of Arithmetic):
- 主張: すべての2以上の自然数は、素数の積として(積の順序を無視すれば)ただ一通りに表すことができる。
- 本質: この定理の核心は、その「一意性 (Uniqueness)」にあります。60をどのように分解しようとも、その”設計図”が「2が2個、3が1個、5が1個」であることは絶対に変わらない、という事実を保証しています。これは、整数の世界における絶対的な法則です。
- 応用:
- 最大公約数(GCD)と最小公倍数(LCM): 2つの数を素因数分解すれば、GCDは「共通する素因数の、より小さい方の指数をとって掛け合わせたもの」、LCMは「すべての素因数の、より大きい方の指数をとって掛け合わせたもの」として、即座に計算できます。
- 約数の個数・総和: ある数 N=paqbrc… の正の約数の個数は (a+1)(b+1)(c+1)… 個、総和は (1+p+⋯+pa)(1+q+⋯+qb)… となります。これも素因数分解という「構造分析」が可能にする強力な応用です。
1.2. 除法の原理と剰余:すべての関係性の出発点
- 除法の原理 (Division Algorithm):
- 主張: 整数 a と正の整数 b が与えられたとき、a=bq+r かつ 0≤r<b を満たす整数の組 (q,r) が、ただ一通り存在する。
- q を商 (Quotient)、 r を剰余 (Remainder) といいます。
- 本質: これは単なる割り算の手順ではなく、「すべての整数は、b で割った余りによって、0,1,…,b−1 の b 個のグループに分類できる」という、整数全体の構造を示唆する、極めて重要な原理です。例えば、「3で割った余り」で分類すれば、すべての整数は 3k,3k+1,3k+2 のいずれかの形をしています。この「剰余による分類」は、整数問題の証明における基本的な戦略となります。
1.3. ユークリッドの互除法:最大公約数への最短経路
二つの整数の最大公約数(GCD)を求める最も効率的でエレガントなアルゴリズムが、ユークリッドの互除法です。
- 中核となる原理:
- 2つの整数 a,b (a>b) について、 a を b で割った商を q、余りを r とすると、gcd(a,b)=gcd(b,r)が成り立つ。
- 証明: a と b の公約数は、a−bq=r より、b と r の公約数でもある。逆に、b と r の公約数は、bq+r=a より、a と b の公約数でもある。よって、a,b の公約数の集合と、b,r の公約数の集合は完全に一致するため、その最大値である最大公約数も等しくなります。
- アルゴリズムの手順:
- 大きい方の数を小さい方の数で割り、余りを求める。
- 割る数と余りで、同様の操作を繰り返す。
- 余りが0になった時点で、その直前の余り(すなわち、最後の0でない余り)が求める最大公約数である。
- 例: gcd(273, 119)を求める。
- 273=119⋅2+35
- 119=35⋅3+14
- 35=14⋅2+7
- 14=7⋅2+0
- 余りが0になったので、その直前の余り 7 が最大公約数。
- 優位性: 素因数分解が困難な巨大な数に対しても、機械的な割り算を繰り返すだけで高速にGCDを求めることができる、極めて優れたアルゴリズムです。
2. 一次不定方程式:整数解を求める技術
ax+by=c のような、未知数が2つ以上あり、解に整数という制約が課せられた方程式を不定方程式 (Diophantine Equation) といいます。その最も基本的な形である一次不定方程式の解法は、ユークリッドの互除法の直接的な応用となっています。
2.1. 方程式 ax+by=c
が整数解を持つ条件
- 存在条件:
- 一次不定方程式 ax+by=c が整数解 (x,y) を持つための必要十分条件は、c が gcd(a,b) の倍数であること。
- 理由:
- ax+by という式は、a と b の線形結合であり、これが作り出すことができる値はすべて gcd(a,b) の倍数となります。したがって、c が gcd(a,b) の倍数でなければ、等式が成り立つことはあり得ません。
2.2. 特殊解の発見:拡張ユークリッド互除法
一般解を求めるためには、まず特殊解、すなわち式を満たす具体的な整数解 (x0,y0) を一つ見つける必要があります。そのための体系的な方法が、ユークリッドの互除法を逆に辿る、通称「拡張ユークリッド互除法」です。
- アルゴリズムの手順:
- ユークリッドの互除法を用いて、gcd(a,b) を求める。
- その計算過程を、「(余り) = (割られる数) – (割る数)×(商)」の形に書き直す。
- 最後の0でない余りの式から出発し、余りの式を逆順に代入していくことで、gcd(a,b) を a と b の線形結合の形 ax0+by0=gcd(a,b) で表現する。
- 例: 273x+119y=7 の特殊解を求める。
- 前の例から、gcd(273,119)=7。
- 計算過程を書き直す。
- 35=273−119⋅2 — (i)
- 14=119−35⋅3 — (ii)
- 7=35−14⋅2 — (iii)
- (iii)から出発して逆代入。
- 7=35−(119−35⋅3)⋅2 ( (ii)を代入 )
- =35−119⋅2+35⋅6
- =35⋅7−119⋅2
- =(273−119⋅2)⋅7−119⋅2 ( (i)を代入 )
- =273⋅7−119⋅14−119⋅2
- =273⋅7+119⋅(−16)
- よって、273(7)+119(−16)=7 となり、特殊解の一つとして (x0,y0)=(7,−16) が見つかる。
2.3. 一般解の導出:一つの解からすべての解へ
特殊解が一つ見つかれば、そこから全ての整数解(一般解)を導き出すことができます。
- 導出プロセス:
- 元の式: ax+by=c
- 特殊解を代入した式: ax0+by0=c
- 両者の差をとる: a(x−x0)+b(y−y0)=0⟹a(x−x0)=−b(y−y0)
- d=gcd(a,b) とし、両辺を d で割る: da(x−x0)=−db(y−y0)
- ここで、da と db は互いに素であるから、x−x0 は db の倍数でなければならない。
- よって、x−x0=dbk (kは任意の整数) と書ける。
- これを代入して y−y0 を求めると、y−y0=−dak となる。
- 一般解の公式:
- x=x0+dbk
- y=y0−dak (k は任意の整数)
3. 合同式:剰余の世界の代数学
合同式は、19世紀の数学の巨人カール・フリードリヒ・ガウスによって体系化された、剰余の世界を記述するための革命的な言語です。合同式を用いることで、複雑な整数の関係が、驚くほどシンプルな代数計算の問題に置き換えられます。
3.1. 合同式の導入:新しい等号「≡」
- 定義:
- 2つの整数 a,b を、正の整数 m で割ったときの余りが等しいとき、a と b は m を法として合同 (congruent modulo m) であるといい、a≡b(modm) と書く。
- 同値な定義:
- a≡b(modm)⇔a−b が m の倍数である(a−b=mk となる整数 k が存在する)。
- この定義の方が、証明などで扱いやすいことが多いです。
- 性質:
- 合同関係
≡
は、通常の等号=
と同じように、反射律 (a≡a)、対称律 (a≡b⟹b≡a)、推移律 (a≡bかつ b≡c⟹a≡c) を満たす同値関係です。これにより、等号と同様の感覚で式変形ができます。
- 合同関係
3.2. 合同式の代数構造:四則演算の可能性と限界
合同式の真価は、その演算可能性にあります。
a≡b(modm), c≡d(modm) のとき、
- 和: a+c≡b+d(modm)
- 差: a−c≡b−d(modm)
- 積: ac≡bd(modm)
- べき乗: an≡bn(modm) (nは自然数)
これらの性質により、大きな数の計算でも、先に法 m で割った余り(絶対値が小さい数)に置き換えてから計算できるため、計算が劇的に楽になります。
- 除算の限界:
- 注意: ac≡bc(modm) であっても、安易に a≡b(modm) としてはいけません。
- 正しい除算: c と法 m が互いに素 (gcd(c,m)=1) である場合に限り、両辺を c で割ることが許されます。
3.3. フェルマーの小定理:巨大なべき乗を簡約する魔法
- 主張:
- p が素数で、a が p の倍数でない整数ならば、ap−1≡1(modp)
- 本質:
- この定理は、素数を法とする剰余の世界において、べき乗が驚くべき周期性を持つことを示しています。指数が p−1 になると、値が1に戻ってくるのです。
- 応用:
- 巨大なべき乗の余りを計算する際に絶大な威力を発揮します。
- 例: 3100 を 13 で割った余りを求める。
- 13は素数なので、フェルマーの小定理より、312≡1(mod13)。
- 100=12⋅8+4 なので、3100=(312)8⋅34
- 3100≡18⋅34≡81(mod13)
- 81=13⋅6+3 なので、81≡3(mod13)。
- よって、求める余りは 3。
3.4. 中国剰余定理:連立合同式を解く
- 問題設定:
- 「3で割ると2余り、5で割ると3余る整数は何か?」といった、複数の法に関する連立合同式を解く問題。
- x≡b1(modm1)
- x≡b2(modm2)
- 中国剰余定理:
- 法 m1,m2 が互いに素であるならば、この連立合同式は m1m2 を法としてただ一つの解を持つ。
- 解法:
- 一方の式から x=m1k+b1 (kは整数) と表現する。
- これをもう一方の式に代入し、k についての一次合同式を解く。
- m1k+b1≡b2(modm2)⟹m1k≡b2−b1(modm2)
- m1 と m2 は互いに素なので、k について解くことができ、その解を元の式に戻せば x が求まる。
- この手法は、3つ以上の連立合同式にも逐次的に適用できます。
4. n進法:数の表現方法の多様性
我々が普段使っている10進法は、数を表現する唯一の方法ではありません。位取りの基数(底)を10以外の数 n に変えることで、数を異なる視点から表現するのがn進法です。
4.1. n進法の原理:「位取り」の構造
- 10進法の分解:
- 例えば、数 253 は、2⋅102+5⋅101+3⋅100 を意味しています。各桁の数字は、10k の位がいくつあるかを示しています。
- n進法の一般化:
- n進法では、基数が n に変わるだけです。n進法で (akak−1…a1a0)n と書かれた数は、
- ak⋅nk+ak−1⋅nk−1+⋯+a1⋅n1+a0⋅n0
- という値を意味します。ここで、各桁の数字 ai は 0≤ai<n を満たす整数です。コンピュータの世界で使われる2進法や16進法がその代表例です。
4.2. n進法から10進法へ:定義に従った展開
- 方法: n進法で表示された数を10進法に変換するには、上記の定義式をそのまま計算するだけです。
- 例: $ (1101)_2$ を10進法に変換する。
- 1⋅23+1⋅22+0⋅21+1⋅20=8+4+0+1=13
4.3. 10進法からn進法へ:除法と剰余の繰り返し
- アルゴリズム: 10進法で与えられた数 N をn進法に変換するには、N を繰り返し n で割り、そのときの余りを逆順に並べます。
- 例: 10進法の数 25 を3進法に変換する。
- 25÷3=8 余り 1
- 8÷3=2 余り 2
- 2÷3=0 余り 2
- 商が0になったら終了。余りを下から上に読むと、$ (221)_3 $ となる。
- アルゴリズムの正当性:
- N=n⋅q0+r0
- q0=n⋅q1+r1
- q1=n⋅q2+r2 …
- これらを代入していくと、N=n(n(nq2+r2)+r1)+r0=q2n3+r2n2+r1n1+r0n0 となり、n進法の位取り表現そのものが現れます。つまり、このアルゴリズムは除法の原理を用いて、数のn進法表現の係数を下の桁から順に決定しているのです。
【末尾の要約】
本モジュール「整数問題の解法戦略」では、連続量とは異なる、整数ならではの離散的で美しい構造とその攻略法を探求しました。
まず、整数の世界を構成する根源的な要素として、素数と算術の基本定理を学び、すべての整数が素因数分解という唯一の設計図を持つことを見ました。そして、整数間の関係性を規定する基本法則である除法の原理から出発し、その応用であるユークリッドの互除法という、最大公約数を求める強力なアルゴリズムを習得しました。
次に、このアルゴリズムを逆用することで、整数解を求める一次不定方程式を体系的に解く手法を確立しました。特殊解を一つ見つけ、そこから一般解を導くという流れは、多くの応用問題の基礎となります。
さらに、視点を変え、剰余そのものに注目する合同式という強力な言語を導入しました。これにより、巨大な数のべき乗計算を簡約化するフェルマーの小定理や、複数の条件を同時に満たす整数を見つけ出す中国剰余定理といった、高度な問題をエレガントに解くための扉が開かれました。
最後に、我々が数をどのように認識し、記述しているかというn進法の原理を学び、数の表現の多様性を理解しました。
結論として、整数問題の核心は、**「構造を見抜く眼」**にあります。それは、与えられた数を「素因数に分解する」「剰余で分類する」「方程式の形に変形する」といった、多様な視点で分析する能力です。本稿で学んだ戦略的アプローチは、一見すると捉えどころのない整数問題に、明確な道筋と秩序を与え、数学の最も根源的で美しい分野の一つを深く味わうための、信頼できるガイドとなるでしょう。