Pythonで学ぶユークリッドの互除法:最大公約数(GCD)を求める基本プログラム
はじめに
この記事では、以下の問題に対する解決策について詳しく解説していきます。
問題の概要
問題文: 2つの数値が与えられたとき、その最大公約数(GCD)を計算して表示します。
GCD(Greatest Common Divisor:最大公約数)とは、2つの数をどちらも余りなく割り切ることができる最大の整数のことです。ここではユークリッドの互除法を用いてGCDを計算します。この手法では、数値同士の割り算を繰り返し行い、余りが0になった時点で計算を終了します。
ユークリッドの互除法の仕組み
ユークリッドの互除法は、次のような手順で動作します。
- 2つの数
aとbを用意します。 aが 0 の場合、bが最大公約数となります。- そうでなければ、
aをb % a(bをaで割った余り)に置き換え、再帰的に処理を繰り返します。
この方法により、大きな数同士でも少ない計算回数で効率的に最大公約数を求めることができます。
実装例
# euclid algorithm for calculation of greatest common divisor
def gcd(a, b):
if a == 0 :
return b
return gcd(b%a, a)
a = 11
b = 15
print("gcd of ", a , "&" , b, " is = ", gcd(a, b))出力結果
gcd of 11 & 15 is = 1

上記のコードでは、すべての変数がローカルスコープ内で宣言されており、その参照関係は図のようになっています。11と15は互いに素であるため、最大公約数は1となることが確認できます。
まとめ
この記事では、基本的なユークリッドの互除法を実装したPythonプログラムの作成方法について学びました。このアルゴリズムは再帰的な構造を持ち、シンプルでありながら非常に効率的に最大公約数を求められるのが特徴です。暗号技術や分数の約分など、さまざまな場面で応用される重要なアルゴリズムなので、ぜひマスターしておきましょう。
-
Pythonで選択ソートを実装する方法|仕組みとサンプルコードをわかりやすく解説
この記事では、選択ソート(Selection Sort)の基本的な仕組みと、Python 3.x(およびそれ以前のバージョン)での実装方法について解説します。 選択ソートとは 選択ソートは、ソートされていない部分から最小の要素を繰り返し見つけ出し、先頭側へ移動させることで配列全体を整列していくアルゴリズムです。処理の過程で、対象の配列は次の2つの部分配列に分けられます。 すでにソートが完了している部分配列 まだソートされていない部分配列 選択ソートの各イテレーションでは、未ソートの部分配列から最小要素を取り出し、ソート済みの部分配列の末尾に追加していきます。 アルゴリズムの動作イメー
-
Pythonで複数の数値や配列の最大公約数(GCD)を求める方法
本記事では、以下の問題に対する解決策について詳しく解説します。問題の概要与えられた数値の配列から、それらすべての最大公約数(GCD)を求める必要があります。アプローチ2つより多い数値の最大公約数を求める場合、GCDは引数として渡されたすべての数値に共通する素因数の積と等しくなります。これは数学的な定義に基づく方法ですが、実装がやや複雑になります。もう一つの方法として、2つの数値ずつペアでGCDを繰り返し計算するという手法があります。具体的には、最初の2つの数値のGCDを求め、その結果と次の数値のGCDを計算し、これを配列の最後まで繰り返します。本記事では、後者のアプローチを実装していきます。実