最大公約数を求めたい整数を、カンマ(,)区切りで2個以上入力してください。3個以上もまとめて計算でき、それぞれの数の素因数分解と共通する素因数も表示します。
このページでできること
- カンマ区切りで整数を入れるだけで、最大公約数(英語ではGCD・GCFと呼ばれます)がその場でわかります
- 2個だけでなく、「16, 88, 104」のように3個以上の整数の最大公約数もまとめて計算できます
- それぞれの整数の素因数分解と、共通する素因数もあわせて表示するので、答えの求め方・確かめ方まで学べます
- 式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
\(\frac{12}{18}\) を約分するとき、分子と分母を最大公約数の 6 で割れば、1回で \(\frac{2}{3}\) まで簡単にできます。
2で割って3で割って…と小さい数で何回も割らなくても、最大公約数を使えば一発で一番簡単な形(既約分数)になります。小学校の算数から大人の実務まで、最大公約数の出番として最も多い使い方です。
お菓子24個とジュース36本を、余りを出さずにできるだけ多くの袋に同じ内容で分けたい——作れる袋の数の最大は \(\gcd(24, 36) = 12\) 袋(1袋あたりお菓子2個とジュース3本)です。
学校行事やイベントの景品分け、備品のセット組みなど、「種類の違うものを同じ組に等しく分ける」場面の定番の計算です。
縦330cm×横450cmの床を、正方形のタイルで隙間も余りもなく敷き詰めたいとき、使える最大のタイルは \(\gcd(330, 450) = 30\)(30cm角)です。
長方形を最大の正方形で割り付けるこの計算は、床や壁の施工、大きな紙から同じサイズのカードを無駄なく切り出すときなどに使われています。
かみ合う2つの歯車は、歯数の最大公約数が大きいと同じ歯同士が何度も当たり、摩耗が偏りやすくなります。そこで機械設計では、歯数をなるべく互いに素(最大公約数が1)に近づけるのが基本とされています。
自動車や時計の中の歯車の歯数にも、この「最大公約数を小さくする」工夫が生きています。
ネット通販やネットバンキングで使われるRSA暗号では、鍵を作る過程で「2つの数が互いに素かどうか」の判定が必要で、そこでユークリッドの互除法が使われています。
紀元前に生まれた最大公約数の求め方が、2000年以上たった今、世界中の通信の安全を支えている——数学の息の長さを実感できる応用例です。
式
用語・記号の解説
記号
| \(\gcd(a, b)\) | ジーシーディー | \(a\) と \(b\) の最大公約数を表す記号。英語の greatest common divisor(GCD)の頭文字です。英語圏では greatest common factor(GCF)とも呼ばれ、\(\mathrm{GCF}(a, b)\) と書かれることもありますが、意味はまったく同じです。 |
| \(a \bmod b\) | エー・モッド・ビー | \(a\) を \(b\) で割った余り。(例:\(48 \bmod 18 = 12\) となります。48 ÷ 18 = 2 余り 12 だからです) |
| \(\mathrm{lcm}(a, b)\) | エルシーエム | \(a\) と \(b\) の最小公倍数を表す記号。英語の least common multiple の頭文字です。(例:\(\mathrm{lcm}(12, 18) = 36\)) |
| \(p_1, p_2, \ldots\) | ピーいち、ピーに、… | 共通する素因数を順に並べたもの。右下の小さい数字(添え字)は「1番目・2番目…」という順番を表しているだけで、計算には使いません。 |
| \(\cdots\) | てんてん(三点リーダー) | 「同じ規則でまだ続く」ことを表す省略記号。素因数が何個あっても同じように掛け合わせる、という意味で使っています。 |
用語
| 約数 | やくすう | ある整数を割り切ることができる正の整数。12の約数は 1, 2, 3, 4, 6, 12 の6個です。 |
| 公約数 | こうやくすう | 2つ以上の整数に共通する約数。12と18の公約数は 1, 2, 3, 6 です。公約数は必ず最大公約数(この例では6)の約数になっています。 |
| 最大公約数 | さいだいこうやくすう | 公約数のうち一番大きいもの。日本の学校ではこの呼び名で習いますが、英語圏ではGCD(greatest common divisor)またはGCF(greatest common factor)と呼ばれます。 |
| 素数 | そすう | 1とその数自身のほかに約数がない、2以上の整数。2, 3, 5, 7, 11, 13, … と続きます。1は素数に含めません。 |
| 素因数分解 | そいんすうぶんかい | 整数を素数だけの掛け算の形に直すこと。(例:\(12 = 2 \times 2 \times 3\))分解に使われた1つ1つの素数を素因数といいます。 |
| 互いに素 | たがいにそ | 2つの整数の最大公約数が1であること(公約数が1しかないこと)。17と13のように、共通する素因数を1つも持たない関係です。 |
| ユークリッドの互除法 | ユークリッドのごじょほう | 「大きい方を小さい方で割り、組を『小さい方と余り』に置き換える」をくり返して最大公約数を求める方法。高校の数学Aで習います。紀元前から知られる「世界最古のアルゴリズム」とも呼ばれます。 |
| 最小公倍数 | さいしょうこうばいすう | 2つ以上の整数に共通する倍数のうち、一番小さい正の整数。分数の通分で使います。2つの数では \(\gcd(a, b) \times \mathrm{lcm}(a, b) = a \times b\) の関係があります。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 九九・余りのある割り算(小学2〜3年) |
|
| 約数と公約数(小学5年) |
|
| 分数の約分(小学5年) |
|
| 素数と素因数分解(中学1年) |
|
Excelで計算する方法
| 1つ目の整数 a | 12 |
| 2つ目の整数 b | 18 |
| 最大公約数 gcd(a, b) | =GCD(B1,B2) |
| 整数1 | 16 |
| 整数2 | 88 |
| 整数3 | 104 |
| 最大公約数 | =GCD(B1:B3) |
| 大きい方 a | 48 |
| 小さい方 b | 18 |
| a を b で割った余り(a mod b) | =MOD(B1,B2) |
| gcd(a, b) | =GCD(B1,B2) |
| gcd(b, 余り)(上と一致します) | =GCD(B2,B3) |
| 1つ目の整数 a | 12 |
| 2つ目の整数 b | 18 |
| 最大公約数 gcd(a, b) | =GCD(B1,B2) |
| 最小公倍数 lcm(a, b) | =LCM(B1,B2) |
| gcd × lcm | =B3*B4 |
| a × b(上と一致します) | =B1*B2 |
2つ目の表のように「=GCD(B1:B3)」と範囲で指定すれば、3個以上の数もまとめて計算できます(B4に 8 と表示されます)。
3つ目の表はユークリッドの互除法の確認用で、MOD関数(割った余り)を使うと gcd(a, b) と gcd(b, 余り) が同じ値(どちらも6)になることを確かめられます。
4つ目の表では、gcd × lcm と a × b がどちらも 216 になり、最小公倍数との関係式を確かめられます。入力欄の数値を自分の整数に書き換えるだけでそのまま使えます。
Googleスプレッドシートで計算する方法
| 1つ目の整数 a | 12 |
| 2つ目の整数 b | 18 |
| 最大公約数 gcd(a, b) | =GCD(B1,B2) |
| 整数1 | 16 |
| 整数2 | 88 |
| 整数3 | 104 |
| 最大公約数 | =GCD(B1:B3) |
| 大きい方 a | 48 |
| 小さい方 b | 18 |
| a を b で割った余り(a mod b) | =MOD(B1,B2) |
| gcd(a, b) | =GCD(B1,B2) |
| gcd(b, 余り)(上と一致します) | =GCD(B2,B3) |
| 1つ目の整数 a | 12 |
| 2つ目の整数 b | 18 |
| 最大公約数 gcd(a, b) | =GCD(B1,B2) |
| 最小公倍数 lcm(a, b) | =LCM(B1,B2) |
| gcd × lcm | =B3*B4 |
| a × b(上と一致します) | =B1*B2 |
表を丸ごとコピーしてA1セルに貼り付け、入力欄の数値を自分の整数に書き換えてください。
Pythonで計算する方法
from math import gcd
from functools import reduce
numbers = [330, 75, 450, 225] # 最大公約数を求めたい整数のリスト(何個でもOK)
greatest_common_divisor = reduce(gcd, numbers) # 先頭から2個ずつ順番にgcdを計算する
print(f"{numbers} の最大公約数: {greatest_common_divisor}")
数式記述言語(LaTeX等)での書き方(コピペ可)
gcd(a, b) = p₁ × p₂ × ⋯
\gcd(a, b) = p_1 \times p_2 \times \cdots
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>gcd</mi>
<mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
<mo>=</mo>
<msub><mi>p</mi><mn>1</mn></msub>
<mo>×</mo>
<msub><mi>p</mi><mn>2</mn></msub>
<mo>×</mo>
<mo>⋯</mo>
</mrow>
</math>
gcd(a, b) = p_1 xx p_2 xx cdots
GCD[a, b]
igcd(a, b);
g = gcd(a, b);
gcd(a, b) = p_1 × p_2 × ⋯
gcd(a, b) = gcd(b, a mod b)
\gcd(a, b) = \gcd(b,\ a \bmod b)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>gcd</mi>
<mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
<mo>=</mo>
<mi>gcd</mi>
<mo>(</mo><mi>b</mi><mo>,</mo>
<mi>a</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>b</mi>
<mo>)</mo>
</mrow>
</math>
gcd(a, b) = gcd(b, a mod b)
GCD[a, b] == GCD[b, Mod[a, b]]
igcd(a, b) = igcd(b, a mod b);
gcd(a, b) == gcd(b, mod(a, b))
gcd(a, b) = gcd(b, a mod b)
gcd(a, b, c) = gcd(gcd(a, b), c)
\gcd(a, b, c) = \gcd(\gcd(a, b),\ c)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>gcd</mi>
<mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>)</mo>
<mo>=</mo>
<mi>gcd</mi>
<mo>(</mo>
<mi>gcd</mi>
<mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
<mo>,</mo><mi>c</mi>
<mo>)</mo>
</mrow>
</math>
gcd(a, b, c) = gcd(gcd(a, b), c)
GCD[a, b, c]
igcd(igcd(a, b), c);
g = gcd(gcd(a, b), c);
gcd(a, b, c) = gcd(gcd(a, b), c)
gcd(a, b) × lcm(a, b) = a × b
\gcd(a, b) \times \mathrm{lcm}(a, b) = a \times b
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>gcd</mi>
<mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
<mo>×</mo>
<mi>lcm</mi>
<mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
<mo>=</mo>
<mi>a</mi>
<mo>×</mo>
<mi>b</mi>
</mrow>
</math>
gcd(a, b) xx lcm(a, b) = a xx b
GCD[a, b]*LCM[a, b] == a*b
igcd(a, b)*ilcm(a, b) = a*b;
gcd(a, b)*lcm(a, b) == a*b
gcd(a, b) × lcm(a, b) = a × b
ChatGPT に聞いて計算してもらう方法
あなたは整数計算のアシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 330, 75, 450, 225 の4つの整数について、次をそれぞれ求めてください。 1. 4つの整数の最大公約数 2. それぞれの整数の素因数分解 3. 4つの整数に共通する素因数 計算に使った式と、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの式を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
