백준: 1934(최소공배수)

강지안·2023년 6월 7일
0

baekjoon

목록 보기
53/186

문제

코드

import java.io.*;

public class q1934 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());

        for(int i=0; i<T; i++) {
            String[] input = br.readLine().split(" ");
            int A = Integer.parseInt(input[0]);
            int B = Integer.parseInt(input[1]);
            bw.write(A * B / getGcd(A,B) + "\n");
        }
        bw.flush();
    }
    public static int getGcd(int a, int b) {
        if(b == 0) return a;
        else return getGcd(b, a%b);
    }
}

학습

  1. 최대공약수를 구하는 방법에는 유클리드 호제법이라는 것이 있다.
    A / B = 몫 + C(나머지) 에서 나머지가 0이 아닐 경우,
    B / C 를 반복하여 최종적으로 나머지가 0일 때 A가 두 수의 최대공약수라는 것이다.
    참고 : 위키백과. 유클리드 호제법 - 예시

  2. 최소공배수 = A * B / 최대공약수
    참고 : https://luran.me/275

  3. BigInteger 자료형일 시 gcd 함수가 기본적으로 제공된다.
    단, 이 경우 BigInteger 자료형은 *가 아닌 .multiple()로 연산을 수행할 수 있다.

0개의 댓글