🍣

C言語 最小公倍数と最大公約数

2025/03/10に公開

C 言語で 最小公倍数(LCM: Least Common Multiple) と 最大公約数(GCD: Greatest Common Divisor) を求める方法

●GCD は ユークリッドの互除法 を使うと効率的に求められます。
 2つの数 a, b の GCD は b == 0 なら a が答え。
 そうでないなら、GCD(b, a % b) を再帰的に求める

●GCDを求めたら、次の式で LCM を求められます。
 LCM(a, b) = (a * b) / GCD(a, b)

コード例(関数で GCD と LCM を求める)

         #include <stdio.h>
    
    // 最大公約数(GCD)を求める関数(ユークリッドの互除法)
    int gcd(int a, int b) {
        return (b == 0) ? a : gcd(b, a % b);
    }
    
    // 最小公倍数(LCM)を求める関数
    int lcm(int a, int b) {
        return (a * b) / gcd(a, b);
    }
    
    int main() {
        int num1, num2;
        
        // ユーザー入力
        printf("2つの整数を入力してください: ");
        scanf("%d %d", &num1, &num2);
    
        // 計算と表示
        printf("最大公約数(GCD): %d\n", gcd(num1, num2));
        printf("最小公倍数(LCM): %d\n", lcm(num1, num2));
    
        return 0;
    }

実行結果 ※直接入力した値からGCD・LCMを出力

    2つの整数を入力してください: 12 18
    最大公約数(GCD): 6
    最小公倍数(LCM): 36

Discussion