Algorithm

수학 / 백준 2609 최대공약수와 최소공배수

Dear-J 2025. 4. 14. 20:00

 

문제 접근

최대공약수는 유클리드 호제법으로 구함

1. 두 수 중 큰 수를 작은 수로 나눔
2. 나머지가 0이 될 때까지 나머지를 다음 나눗셈의 나누는 수로 사용하여 계속 나눔
3. 나머지가 0이 되었을 때 나눈 수가 최대공약수

 

최소공배수는 두 수를 곱한 값을 최대공약수로 나눠서 구함

 

>> 최대공약수만 구하면 끝

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

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

        int A = Integer.parseInt(split[0]);
        int B = Integer.parseInt(split[1]);

        int gcd;

        if (A < B) {
            gcd = gcd(B, A);
        } else {
            gcd = gcd(A, B);
        }

        int lcm = A * B / gcd;

        sb.append(gcd).append("\n");
        sb.append(lcm).append("\n");

        System.out.println(sb);
    }

    public static int gcd(int A, int B){
        if (B == 0) {
            return A;
        }
        return gcd(B, A % B);
    }
}

'Algorithm' 카테고리의 다른 글

수학 / 백준 1978 소수 찾기  (0) 2025.04.22
수학 / 백준 1934 최소공배수  (0) 2025.04.16
수학 / 백준 10430 나머지  (0) 2025.04.13
자료구조 / 백준 17299 오등큰수  (0) 2025.04.11
자료구조 / 백준 17298 오큰수  (0) 2025.04.09