1. はじめに
Pythonで整数の計算を行う際に「最大公約数」を求めたい場面は意外と多くあります。
たとえば、分数の約分や比率の簡略化、数学的なアルゴリズムを作る場合などです。
そんなときに便利なのが、math.gcd()
関数です。
本記事では、Python|最大公約数を取得する:math.gcd() の使い方を、初心者にもわかりやすく解説します。
基本的な構文から実務でも役立つ応用例、注意点までカバーしていますので、この記事を読み終える頃にはmath.gcd()
を使いこなせるようになるでしょう。
2. math.gcd() の基本解説
math.gcd()
は Python の組み込みモジュール math
に含まれる関数で、2つの整数の最大公約数を返します。
最大公約数とは、2つの整数を割り切れる最大の整数のことです。
基本構文
import math
# math.gcd(a, b) の形式で使う
result = math.gcd(12, 18)
print(result) # 出力: 6
実行結果:
6
この例では、12
と 18
の両方を割り切れる最大の整数は 6
なので、math.gcd()
は 6
を返します。
特徴
math
モジュールをインポートする必要があります- 負の数を渡しても、結果は正の数として返ります
- 0 と任意の数の最大公約数は、その任意の数になります
簡単な例
import math
print(math.gcd(8, 12)) # 4
print(math.gcd(20, 50)) # 10
print(math.gcd(-27, 9)) # 9
print(math.gcd(0, 5)) # 5
実行結果:
4
10
9
5
3. よくある使い方・応用例
3-1. 分数の約分
分数の分子と分母の最大公約数を使えば、分数を簡単に約分できます。
import math
def reduce_fraction(numerator, denominator):
gcd_value = math.gcd(numerator, denominator)
return numerator // gcd_value, denominator // gcd_value
num, den = reduce_fraction(42, 56)
print(f"{num}/{den}")
実行結果:
3/4
このように、math.gcd()
を使えば手軽に分数を約分できます。
3-2. 比率の簡略化
比率の表記(例:1920×1080 の画面解像度)も最大公約数を使って簡略化できます。
import math
def simplify_ratio(width, height):
gcd_value = math.gcd(width, height)
return width // gcd_value, height // gcd_value
ratio = simplify_ratio(1920, 1080)
print(f"{ratio[0]}:{ratio[1]}")
実行結果:
16:9
3-3. 複数の数値の最大公約数
math.gcd()
は2つの引数しか取れませんが、functools.reduce()
を使えば複数の数値の最大公約数を求められます。
import math
from functools import reduce
numbers = [48, 64, 80]
def gcd_multiple(nums):
return reduce(math.gcd, nums)
print(gcd_multiple(numbers))
実行結果:
16
4. 注意点・エラー対策
4-1. 引数は整数型である必要がある
math.gcd()
は整数専用です。浮動小数点数や文字列を渡すとエラーになります。
import math
# math.gcd(3.5, 7) # TypeError: 'float' object cannot be interpreted as an integer
4-2. 引数が負の数の場合
負の数を渡しても、結果は正の数として返されます。
これは数学的な定義に基づく仕様です。
4-3. 0 を含む場合
math.gcd(0, b)
は b
を返し、math.gcd(0, 0)
は 0
を返します。
5. まとめ
本記事では、Python|最大公約数を取得する:math.gcd() の使い方を解説しました。
math.gcd()
は2つの整数の最大公約数を求める関数- 分数の約分や比率の簡略化に便利
functools.reduce()
を使えば複数の数の最大公約数も計算可能- 整数専用で、0や負の数にも対応
実務では、画像サイズや比率計算、データ正規化など多くの場面で役立ちます。
この機会にぜひ、自分のプロジェクトでもmath.gcd()
を使ってみてください。