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

JavaScriptで2つの数値の最小公倍数(LCM)を計算する方法

本記事では、2つの数値を受け取ってその最小公倍数を返す関数を、JavaScriptで作成していきます。

最小公倍数(LCM)とは

2つの数 a と b の最小公倍数とは、a と b のどちらでも割り切れる正の整数のうち、最も小さいものを指します。

例えば、6と8の最小公倍数は24です。これは、24が6と8の両方で割り切れる最も小さい正の整数だからです。

最小公倍数の求め方

最小公倍数を求める方法はいくつかありますが、そのひとつが「2つの数の積を、両方を割り切れる最大の整数(最大公約数・GCD)で割る」というアプローチです。

6と8の場合を見てみましょう。2つの数の積は48で、両方を割り切れる最大の整数(最大公約数)は2です。したがって、最小公倍数は次のように求められます。

(6*8)/2 = 24

仕組みが理解できたところで、実際のコードを見ていきましょう。

サンプルコード

const lcm = (a, b) => {
    let min = Math.min(a, b);
    while(min >= 2){
        if(a % min === 0 && b % min === 0){
            return (a*b)/min;
        };
        min--;
    };
    return (a*b);
};
console.log(lcm(6, 8));
console.log(lcm(16, 18));
console.log(lcm(0, 8));
console.log(lcm(11, 28));
console.log(lcm(18, 34));

コードの解説

両方の数を割り切る最大の整数(最大公約数)は、必ず2つの数のうち小さい方の値以下になります。そこで、小さい方の数から2まで降順にループを回しながら、最大公約数を探索しています。

ループの途中で「両方の数を余りなく割り切れる値」が見つかれば、降順で探索しているため、それが間違いなく最大公約数であると保証できます。その時点で、積をその値で割った結果(最小公倍数)を返却します。

一方、ループが最後まで完了しても該当する数が見つからなかった場合は、1以外に共通の約数が存在しない(互いに素である)ことを意味します。この場合は、単純に2つの数の積を返せばそれが最小公倍数となります。

実行結果

コンソールへの出力は以下のようになります。

24
144
0
308
306
  1. Javaで2つの数値の最小公倍数(LCM)を求めるプログラム

    この記事では、Javaを使って2つの数値の最小公倍数(LCM:Least Common Multiple)を計算する方法を解説します。最小公倍数とは、2つの数値のどちらでも割り切れる正の整数のうち、最も小さい数のことです。入力と出力の例例として、次のような入力を考えます。入力:24 と 18出力:2つの数値のLCMは 72 ですアルゴリズムLCMを求めるための手順は以下の通りです。ステップ1:開始する ステップ2:3つの整数変数 input_1、input_2、lcm を宣言する ステップ3:ユーザーに2つの整数値の入力を促す/または値をハードコードする ステップ4:値を読み込む ステップ5:

  2. Pythonで2つの数の公約数を求めるプログラムの書き方

    はじめに この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 2つの整数が与えられたとき、それらに共通する約数(公約数)の個数を表示する必要があります。 アプローチの考え方 まず、入力として受け取った2つの数のうち、小さい方の値(最小値)を計算します。続いて、1からその最小値までの各値で2つの数を順番に割っていき、両方の数を割り切ることができるかどうかをループ処理で確認します。 条件が真(True)と評価されるたびに、カウンターを1ずつ増加させます。最終的なカウンターの値が、2つの数の公約数の個数となります。 実装例 それでは、以下のコードで実際の実装を見てみましょう。