Python|最大公約数を取得する:math.gcd()

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

この例では、1218 の両方を割り切れる最大の整数は 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()を使ってみてください。

タイトルとURLをコピーしました