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