[Baekjoon] 13241번: 최소공배수

2023. 4. 13. 20:12Computer Sciences/Problem Solve

https://www.acmicpc.net/problem/13241

 

13241번: 최소공배수

정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다

www.acmicpc.net

문제 설명

 주어진 두 수의 최소공배수를 출력해야 한다. 입력값 범위를 고려해 long을 사용해야 한다.

풀이 방법

두 수의 최소공배수는 (두 수의 곱) / 최대공약수로 해결할 수 있다. 최대공약수는 유클리드 호제법을 활용하여 간단하게 구현할 수 있다.

import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] split = br.readLine().split(" ");

        long a = Long.parseLong(split[0]);
        long b = Long.parseLong(split[1]);

        System.out.println(a > b ? (a * b) / gcd(a, b) : (a * b) / gcd(b, a));
    }

    private static long gcd(long a, long b) {
        long r = a % b;
        if (r == 0)
            return b;

        return gcd(b, r);
    }
}