본문 바로가기

백준 문제풀기/JAVA

[백준 1934 JAVA 자바] 최소공배수

A와 B의 최소공배수를 구하는 가장 직관적인 방법은

A*B / gcd(A,B) 입니다

 

gcd를 찾는 방법은 여러개가 있지만

 

저는 유클리드 호제법을 이용했습니다

 

코드입니다

 

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int n = Integer.parseInt(br.readLine());
        int arr[] = new int[n];
        
        for (int i = 0; i < n; i++) {
            String line = br.readLine();
            StringTokenizer st = new StringTokenizer(line);
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            
            int gcd = gcd(a,b);            
            arr[i] = a*b/gcd;
            
        }        
        for(int i=0; i<n;i++) {
        	System.out.println(arr[i]);
        }
    }
    static int gcd(int a, int b) {
        while (b != 0) {
            int r = a%b;
            a=b;
            b=r;
        }
        return a;
    }
}

 

 

유클리드 호제법은 두 수를 계속해서 나누면서

나머지가 0일때까지 반복하는겁니다

 

정수론의 기본중 하나입니다