JavaLog

プログラミング初心者向けの小ネタ集

【Java8】最大公約数・最小公倍数

ユークリッドの互除法

public class Main {
    public static void main(String[] args) {
        
        //2つの数の最大公約数
        long a = 36;
        long b = 27;
        long gcd = gcd(a, b);
        System.out.println(gcd);
        
        //2つの数の最小公倍数
        long lcm = a * b / gcd;
        System.out.println(lcm);   
    }
    
    static long gcd(long a, long b) {
        long ans = 0;
        while(true) {
            if(a == b) {
                ans = a;
                break;
                
            } else if(a > b) {
                long tmp = a-b;
                a = b;
                b = tmp;
                
            } else if(a < b) {
                long tmp = b-a;
                a = a;
                b = tmp;
            }
        }
        return ans;
    }
}
実行結果

9
108