忍者ブログ
統計、機械学習、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

【Python】リストの基本操作とデータの管理方法

Pythonプログラミングにおいて、最も頻繁に利用されるデータ構造が「リスト」です。今回は、複数のデータをまとめて管理し、順番に処理する「リストの基本」と、実務で役立つ操作方法を解説します。

1. 考え方:リスト(配列)の世界

リストは、複数の値を一つの変数にまとめて格納できる「箱」のようなものです。大量のデータを個別の変数に入れず、一括で扱うために使用します。

myArr = ["1番目", "2番目", "3番目"]

[ リストの特徴 ]
順序がある:データを入れた順番が保持されます。
柔軟な変更:後から中身を増やしたり、削ったりできます。
一括処理:for文などのループ処理と相性抜群です。

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

リストに格納された要素を、for文を使って一つずつ取り出し、画面に出力する基本的なコードを記述します。

-- coding: utf-8 --
def main():
# リストの定義
myArr = ["1番目", "2番目", "3番目"]

print("リストの処理を開始します。")

# for文による繰り返し処理
for arr in myArr:
    print(arr)
if name == "main":
main()

3. 実行結果

リストの処理を開始します。
1番目
2番目
3番目

4. ステップアップ:要素の追加と削除

リストは作成後、プログラムの状況に応じて中身を動的に変更することが可能です。

  • 追加(append)myArr.append("4番目") とすると、末尾に新しい要素が加わります。
  • 削除(remove)myArr.remove("2番目") とすると、指定した値がリストから消去されます。

5. 似たデータ構造との使い分け

Pythonにはリスト以外にもデータをまとめる器があります。目的によって使い分けましょう。

データ構造特徴使い分けのポイント
リスト 中身を書き換え可能 順番が重要で、追加・削除が頻繁なとき。
タプル 中身を書き換え不可 設定値など、誤って変更したくないデータの保護に。
辞書 (dict) 「名前:値」で管理 特定のキーワードで素早く検索したいときに。

6. まとめ

リストは、データの「並び」を扱うプログラミングの土台です。まずは基本的なループ処理をマスターし、徐々に追加・削除や他のデータ構造との組み合わせに挑戦してみましょう!