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

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つの入力値のうち大きい方から順に、両方の数値を余りなく割り切れるかどうかを確認する
ステップ6:その条件を満たした値を2つの数値のLCMとして表示する
ステップ7:終了する

例1:ユーザーからの入力を使用する場合

以下の例では、Scannerクラスを使ってユーザーから数値を入力してもらい、その値をもとにLCMを計算します。ロジックとしては、まず2つの数値のうち大きい方を初期候補とし、whileループの中で候補となる数が両方の入力値を余りなく割り切れるかを順番にチェックしていきます。

import java.util.Scanner;
public class LCM {
   public static void main(String[] args) {
      int input_1 , input_2 , lcm;
      Scanner scanner = new Scanner(System.in);
      System.out.println("スキャナーオブジェクトが定義されました");
      System.out.println("1つ目の数値を入力してください:");
      input_1 = scanner.nextInt();
      System.out.println("2つ目の数値を入力してください:");
      input_2 = scanner.nextInt();
      lcm = (input_1 > input_2) ? input_1 : input_2;
      while(true) {
         if( lcm % input_1 == 0 && lcm % input_2 == 0 ) {
            System.out.printf("%d と %d のLCMは %d です。", input_1, input_2, lcm);
            break;
         }
         ++lcm;
       }
   }
}

出力:

スキャナーオブジェクトが定義されました
1つ目の数値を入力してください:
24
2つ目の数値を入力してください:
18
24 と 18 のLCMは 72 です。

例2:値を事前に定義しておく場合

次の例では、整数値があらかじめプログラム内で定義されており、その値を読み取ってコンソールに結果を表示します。入力処理が不要なため、動作確認や学習用途に便利な方法です。

public class LCM {
   public static void main(String[] args) {
      int input_1 , input_2 , lcm;
      input_1 = 24;
      input_2 = 18;
      System.out.println("1つ目の数値は " + input_1);
      System.out.println("2つ目の数値は " + input_2);
      lcm = (input_1 > input_2) ? input_1 : input_2;
      while(true) {
         if( lcm % input_1 == 0 && lcm % input_2 == 0 ) {
            System.out.printf("\n%d と %d のLCMは %d です。", input_1, input_2, lcm);
            break;
         }
         ++lcm;
      }
   }
}

出力:

1つ目の数値は 24
2つ目の数値は 18
24 と 18 のLCMは 72 です。

まとめ

このように、Javaでは「大きい方の数値から順に割り切れるかを確認していく」というシンプルなアプローチで最小公倍数を求めることができます。ユーザー入力を受け付ける方法と、値を固定して実行する方法のどちらも状況に応じて使い分けるとよいでしょう。また、より効率的な実装としては、最大公約数(GCD)を利用して「LCM = (a × b) ÷ GCD」で求める方法もありますので、興味がある方はぜひ試してみてください。

  1. 正方形の面積を求めるJavaプログラムの書き方【初心者向け解説】

    この記事では、Javaを使って正方形の面積を求める方法をわかりやすく解説します。正方形の面積は、次の公式で計算できます。辺 × 辺つまり s2正方形の面積の計算式正方形の1辺の長さを s とすると、その面積は s2(辺の2乗)で表されます。下図のように、縦と横が同じ長さの図形であるため、辺同士を掛け合わせるだけで面積が求まります。入力例1辺の長さ : 4出力例正方形の面積 : 16アルゴリズム処理の流れは以下の手順になります。Step 1 - 開始Step 2 - 整数型の変数 my_side(辺の長さ)と my_area(面積)を宣言するStep 3 - ユーザーから値を読み込む、または値を

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

    この記事では、Javaを使って2つの整数の公約数(共通の約数)の個数を求めるプログラムを紹介します。再帰処理によるユークリッドの互除法で最大公約数(GCD)を計算し、その約数を効率よく数える手法を、サンプルコードとともにわかりやすく解説します。 サンプルコード public class Demo{ static int find_gcd(int val_1, int val_2){ if (val_1 == 0) return val_2; return find_gcd(val_2%val_1,val_1); } sta