新らしくなった基本情報 科目 B 20問バージョン アルゴリズムとプログラミング サンプル問題4をJavaにしてみました

2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。

ここでは、「基本情報技術者試験 科目 B のサンプル問題20問バージョン」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。

新人エンジニア研修に参加されている皆様の参考になれば幸いです。

【Javaプログラム】

public class Q4 {
    //本問で問われている関数
    static int gdc(int num1, int num2) {
        int x = num1;
        int y = num2;
        while (x != y) {
            if (x > y) {
                x = x - y;
            } else {
                y = y - x;
            }
        }
        return x;
    }

    //    以下はテスト
    public static void main(String[] args) {
        System.out.println(gdc(30, 42));
        System.out.println(gdc(42, 30));
        System.out.println(gdc(12, 6));
        System.out.println(gdc(6, 6));
    }
}

【結果】

6
6
6
6

【プログラムの解説】

このJavaプログラムは、2つの整数 num1 と num2 の最大公約数を求めるプログラムです。

gdc(int num1, int num2) メソッドでは、 x に num1 を、 y に num2 を代入しています。

その後、 while ループを使って x と y が等しくなるまで、次の処理を繰り返します。

x が y よりも大きい場合は、 x から y を引いた値を x に代入します。

y が x よりも大きい場合は、 y から x を引いた値を y に代入します。

最終的に while ループが終了すると、 x の値が num1 と num2 の最大公約数になりますのでその値を return 文で返します。

main メソッドでは、 gdc メソッドを引数を変えて4回呼び出して、その結果を出力しています。

例えば、 gdc(30, 42) を呼び出すと、num1 には 30 が、 num2 には 42 が渡されます。

gdc メソッド内での処理を追うと、最初のループでは x は 30、 y は 42 になっています。

次に y - x を計算して 12 になり、y に代入されます。これにより、x は 30 のまま、 y は 12 になります。

2回目のループでは、 x は 18 に、 y も 18 になります。

最後に、 x と y が等しくなるため、 while ループが終了します。

x の値が 6 になっているため、 gdc(30, 42) の戻り値は 6 になります。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。