みんなの教科書GitHub

数学A3

数学と人間の活動(整数)

約数と倍数、ユークリッドの互除法、不定方程式、n進法を学びます。

約数と倍数

2つの整数 aabb について、a=bka = bk となる整数 kk が存在するとき、bbaa の約数、aabb の倍数であるといいます。たとえば 12=3×412 = 3 \times 4 なので、331212 の約数、121233 の倍数です。

ある数が何の倍数かは、実際に割らなくても各位の数字から判定できます。テストでも頻出なので、次の判定法は確実に覚えましょう。

倍数の判定法

2の倍数 … 一の位が 0,2,4,6,80, 2, 4, 6, 8

5の倍数 … 一の位が 0,50, 5

4の倍数 … 下2桁が4の倍数(0000 を含む)

8の倍数 … 下3桁が8の倍数(000000 を含む)

3の倍数 … 各位の数字の和が3の倍数

9の倍数 … 各位の数字の和が9の倍数

3の倍数の判定法が成り立つ理由を、3桁の数で確かめてみましょう。百の位が aa、十の位が bb、一の位が cc の数は 100a+10b+c100a + 10b + c と表せます。これを

100a+10b+c=(99a+9b)+(a+b+c)=3(33a+3b)+(a+b+c)100a + 10b + c = (99a + 9b) + (a + b + c) = 3(33a + 3b) + (a+b+c)

と変形すると、3(33a+3b)3(33a+3b) は必ず3の倍数なので、全体が3の倍数になるかどうかは a+b+ca+b+c(各位の数字の和)だけで決まることが分かります。

22 以上の自然数のうち、11 とその数自身以外に約数を持たない数を素数といいます(2,3,5,7,11,2, 3, 5, 7, 11, \dots)。自然数を素数だけの積の形に表すことを素因数分解といい、その表し方は積の順序を除いてただ1通りです。素因数分解は、この章のすべての話題の土台になります。

約数の個数と総和

自然数 NNN=paqbrcN = p^a q^b r^c と素因数分解されるとき

正の約数の個数: (a+1)(b+1)(c+1)(a+1)(b+1)(c+1)

正の約数の総和: (1+p++pa)(1+q++qb)(1+r++rc)(1 + p + \cdots + p^a)(1 + q + \cdots + q^b)(1 + r + \cdots + r^c)

約数は「pp を何個、qq を何個、rr を何個使うか」の組合せで決まるので、指数に +1+1(00 個の場合)をした積が個数になります。

例題 1(約数の個数と総和)

200200 の正の約数の個数と総和を求めよ。

解き方

まず素因数分解します。

200=23×52200 = 2^3 \times 5^2

約数の個数は、指数にそれぞれ 11 を足して掛け合わせます。

(3+1)(2+1)=12(3+1)(2+1) = 12

よって 1212 個です。約数の総和は

(1+2+4+8)(1+5+25)=15×31=465(1+2+4+8)(1+5+25) = 15 \times 31 = 465

最大公約数・最小公倍数とユークリッドの互除法

2つの整数に共通な約数を公約数、共通な倍数を公倍数といい、公約数のうち最大のものを最大公約数、正の公倍数のうち最小のものを最小公倍数といいます。最大公約数が 11 である2つの整数は互いに素であるといいます。

素因数分解ができれば、最大公約数は「共通する素因数を、小さい方の指数だけ集めた積」、最小公倍数は「現れる素因数を、大きい方の指数だけ集めた積」として求められます。

例題 2(素因数分解による求め方)

60607272 の最大公約数と最小公倍数を求めよ。

解き方

それぞれ素因数分解すると

60=22×3×5,72=23×3260 = 2^2 \times 3 \times 5, \quad 72 = 2^3 \times 3^2

最大公約数は、共通する素因数を小さい方の指数で取って

22×3=122^2 \times 3 = 12

最小公倍数は、現れる素因数を大きい方の指数で取って

23×32×5=3602^3 \times 3^2 \times 5 = 360

最大公約数と最小公倍数の関係

2つの自然数 aabb の最大公約数を GG、最小公倍数を LL とすると、a=Gaa = Ga'b=Gbb = Gb'(aa'bb' は互いに素)と表せて

L=Gab,ab=GLL = Ga'b', \quad ab = GL

「2数の積 = 最大公約数 × 最小公倍数」の関係は、応用問題で非常によく使います。

数が大きくなると素因数分解は大変です。そこで活躍するのがユークリッドの互除法です。これは次の原理にもとづきます。

aabb で割った商を qq、余りを rr とする(a=bq+ra = bq + r)と、aabb の最大公約数は、bbrr の最大公約数に等しい。

つまり「大きい2数の最大公約数」を「より小さい2数の最大公約数」の問題にどんどんおき換えられるのです。余りが 00 になったとき、そのときの割る数が最大公約数です。

例題 3(ユークリッドの互除法)

319319143143 の最大公約数を求めよ。

解き方

割り算を繰り返します。

319=143×2+33319 = 143 \times 2 + 33
143=33×4+11143 = 33 \times 4 + 11
33=11×333 = 11 \times 3

余りが 00 になったので、最後に割った数 1111 が最大公約数です。

実際、319=11×29319 = 11 \times 29143=11×13143 = 11 \times 13 で、29291313 は互いに素なので確かに正しいことが分かります。

1次不定方程式

aabbcc を整数の定数とするとき、ax+by=cax + by = c を満たす整数 xxyy の組をすべて求める問題を1次不定方程式といいます。解は1組ではなく、無数にあるのが特徴です。

aabb が互いに素のとき、ax+by=cax + by = c は必ず整数解を持ちます。逆に、aabb の最大公約数が cc の約数でないときは、整数解は存在しません(左辺が必ず最大公約数の倍数になるからです)。

1次不定方程式の解法

aabb が互いに素のとき、ax+by=cax + by = c は次の手順で解きます。

1. 整数解を1組見つける(これを x0x_0y0y_0 とする)
2. ax+by=cax + by = c から ax0+by0=cax_0 + by_0 = c を辺々引いて a(xx0)=b(yy0)a(x - x_0) = -b(y - y_0) を作る
3. aabb は互いに素だから、xx0x - x_0bb の倍数。xx0=bkx - x_0 = bk とおいて一般解を書く

一般解は x=x0+bkx = x_0 + bky=y0aky = y_0 - ak(kk は整数)の形になります。

例題 4

方程式 2x+3y=12x + 3y = 1 の整数解をすべて求めよ。

解き方

まず整数解を1組見つけます。x=2x = 2y=1y = -1 とすると 2×2+3×(1)=12 \times 2 + 3 \times (-1) = 1 となり成り立ちます。

2x+3y=12x + 3y = 1
2×2+3×(1)=12 \times 2 + 3 \times (-1) = 1

辺々引くと

2(x2)+3(y+1)=02(x - 2) + 3(y + 1) = 0

すなわち

2(x2)=3(y+1)2(x-2) = -3(y+1)

2233 は互いに素なので、x2x - 233 の倍数です。x2=3kx - 2 = 3k(kk は整数)とおくと、23k=3(y+1)2 \cdot 3k = -3(y+1) より y+1=2ky + 1 = -2k。よって、kk を整数として

x=3k+2,y=2k1x = 3k + 2, \quad y = -2k - 1

k=0,1,1k = 0, 1, -1 などを代入して、元の方程式が成り立つか検算しましょう。

右辺が 11 でない ax+by=cax + by = c の場合も、まず ax+by=1ax + by = 1 の解を1組見つけて両辺を cc 倍すれば、ax+by=cax + by = c の解が1組得られます。また、係数が大きくて解が見つけにくいときは、ユークリッドの互除法の計算を逆にたどると必ず1組の解を作れます(発展問題で扱います)。

n進法

私たちが普段使う10進法は、00 から 99 の10種類の数字を使い、10集まるごとに位が1つ上がる記数法です。同じように、nn 種類の数字を使い、nn 集まるごとに位が上がる表し方を nn 進法といい、nn 進法で表された数を 1101(2)1101_{(2)} のように書きます。コンピュータの内部では、0011 だけを使う2進法が使われています。

たとえば2進法の 1101(2)1101_{(2)} は、右から順に 11 の位、22 の位、222^2 の位、232^3 の位を表すので

1101(2)=1×23+1×22+0×2+1×1=131101_{(2)} = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2 + 1 \times 1 = 13

となります。

n進法と10進法の相互変換

nn 進法 → 10進法: 各位の数字に nkn^k を掛けて足す

10進法 → nn 進法: nn で割った商をさらに nn で割る操作を繰り返し、出てきた余りを下から順に(最後の商から逆順に)並べる

例題 5(相互変換)

(1) 1011(2)1011_{(2)} を10進法で表せ。
(2) 2222 を2進法で表せ。

解き方

(1) 各位に 22 の累乗を掛けて足します。

1011(2)=1×23+0×22+1×2+1×1=8+0+2+1=111011_{(2)} = 1 \times 2^3 + 0 \times 2^2 + 1 \times 2 + 1 \times 1 = 8 + 0 + 2 + 1 = 11

(2) 22 で割った余りを記録しながら、商を繰り返し割っていきます。

22=2×11+022 = 2 \times 11 + 0
11=2×5+111 = 2 \times 5 + 1
5=2×2+15 = 2 \times 2 + 1
2=2×1+02 = 2 \times 1 + 0
1=2×0+11 = 2 \times 0 + 1

余りを下から順に並べて

22=10110(2)22 = 10110_{(2)}

検算: 16+4+2=2216 + 4 + 2 = 22 で確かに一致します。

小数も同じ考え方で表せます。2進法の小数第1位は 12\dfrac{1}{2} の位、小数第2位は 122\dfrac{1}{2^2} の位、… を表します。たとえば

0.11(2)=12+14=0.750.11_{(2)} = \frac{1}{2} + \frac{1}{4} = 0.75

逆に、10進法の小数を2進法に直すには、小数部分に 22 を掛けて整数部分を取り出す操作を、小数部分が 00 になるまで繰り返します。取り出した整数部分を上から順に並べたものが2進小数です。

この章の内容がむずかしいと感じたら

ChatGPTで質問Claudeで質問Geminiで質問

わからないところは遠慮なくAIに聞こう。Geminiはボタンを押すとプロンプトがコピーされるので、開いたら貼り付けてね。