Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで最小公倍数(LCM)を求める方法をわかりやすく解説

最小公倍数(LCM)とは

2つ(またはそれ以上)の数の最小公倍数(LCM:Least Common Multiple)とは、それらすべての数で割り切れる最も小さい数のことです。例えば、12と20の場合、両方の数で割り切れる最小の数は60となります。

基本的な求め方

シンプルなアルゴリズムは以下の手順で構成されます。

まず、与えられた2つの数のうち大きい方を取得します。その値から順に1ずつ増やしながら、両方の数で割り切れる最初の数を探します。見つかった数が最小公倍数(LCM)です。

サンプルコード

x=12
y=20
if x > y:
    greater = x
else:
    greater = y
while(True):
    if((greater % x == 0) and (greater % y == 0)):
        lcm = greater
        break
    greater += 1

print ("LCM of {} and {}={}".format(x,y,lcm))

実行結果

出力は以下のようになります。

LCM of 12 and 20=60

より効率的な方法:GCDを利用する

扱う数が大きい場合、上記の方法ではループ回数が増えて計算に時間がかかることがあります。そんなときは、最大公約数(GCD)を利用すると効率的です。2つの数 a と b の最小公倍数は、次の公式で求められます。

LCM = a × b ÷ GCD(a, b)

GCDを使ったサンプルコード

import math

x = 12
y = 20
lcm = (x * y) // math.gcd(x, y)
print("LCM of {} and {}={}".format(x, y, lcm))

この方法なら、ループ処理を一切行わずに瞬時に最小公倍数を計算できるため、実務でも推奨されるアプローチです。

  1. Pythonで整数の桁数を求める方法をわかりやすく解説

    この記事では、ユーザーから入力された整数の桁数を求めるPythonプログラムを紹介します。初心者にもわかりやすいように、アルゴリズムの考え方からサンプルコード、実行結果まで順を追って解説していきます。 実行例 入力:123 → 出力:3入力:1987 → 出力:4 アルゴリズム 桁数を求める基本的な流れは以下の通りです。 ユーザーから整数値を入力として受け取ります。 数値を10で割り、その商を整数型(int)に変換します。 商が0でなければ、桁数のカウントを1つ増やします。 商が0になった時点でカウントを終了します。 処理を終了し、桁数を出力します。 サンプルコード x = int(

  2. Pythonのscikit-learnを使って画像の輪郭を検出する方法

    scikit-learn(通称:sklearn)は、機械学習アルゴリズムを実装するために使用されるPythonのライブラリです。オープンソースとして公開されているため、無料で利用できます。このライブラリは、NumPy・SciPy・Matplotlibという3つのライブラリを基盤として構築されています。画像から輪郭を抽出する際には、「マーチングスクエア法(marching squares)」と呼ばれる手法が用いられます。具体的には、skimageライブラリのmeasureモジュールに含まれる「find_contours」関数を使用します。この関数では、配列内の値が線形補間されるため、出力画像にお