忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Python】math.gcdで最大公約数をスマートに求める

数学的な計算が必要なプログラムでは、複数の数値の「最大公約数」を求めたい場面が多々あります。Pythonでは標準ライブラリのmathモジュールを使うことで、複雑な計算式を書かずに一瞬で算出可能です。

1. 考え方:最大公約数(GCD)とは

最大公約数(Greatest Common Divisor)は、2つ以上の整数に共通する約数の中で、最も大きい数値のことです。分数の約分や、タイルの敷き詰め問題などのアルゴリズムで活用されます。

a = 12 (約数: 1, 2, 3, 4, 6, 12)
b = 8 (約数: 1, 2, 4, 8)

[ 判定ルール ]
・共通する約数(公約数)は 1, 2, 4
・その中で最大のもの4

2. Pythonサンプルプログラム

math.gcd() 関数を使用します。自分でループを回して計算する必要がないため、コードが非常にシンプルになります。

-- coding: utf-8 --
import math

def main():
a = 12
b = 8

print(f"{a} と {b} の最大公約数を求めます。")

# math.gcd() で計算
result = math.gcd(a, b)

print(f"結果: {result}")
if name == "main":
main()

3. 実行結果

12 と 8 の最大公約数を求めます。
結果: 4

4. ステップアップ:より高度な数学関数

mathモジュールには、GCD以外にも便利な関数が用意されています。

  • 最小公倍数(lcm):Python 3.9以降では math.lcm(a, b) で最小公倍数も求められます。
  • 絶対値(fabs)math.fabs(x) で数値の絶対値を取得できます。

5. リストと組み合わせた使い分け

複数の数値(3つ以上)の最大公約数を求めたい場合、リストと組み合わせるのが効率的です。

ケース実装方法メリット
2つの数値 math.gcd(a, b) 最もシンプルで基本の書き方。
3つ以上の数値 math.gcd(*list) 可変長引数を使って一気に算出可能。

6. まとめ

最大公約数の計算は、アルゴリズムの基礎です。Pythonなら import math を一行書くだけで、正確かつ高速に答えを導き出せます。数学的な処理が必要な際は、まず math モジュールに便利な道具がないか探してみるのが上達の近道です!


PR