
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일때까지 반복하는겁니다
정수론의 기본중 하나입니다
'백준 문제풀기 > JAVA' 카테고리의 다른 글
[백준 1009 JAVA 자바] 분산처리 (0) | 2023.07.31 |
---|---|
[백준 1978 JAVA 자바] 소수 찾기 (0) | 2023.07.31 |
[백준 1929 JAVA 자바] 소수 구하기 (0) | 2023.07.31 |
[백준 1924 JAVA 자바] 2007년 (0) | 2023.07.30 |
[백준 1920 JAVA 자바] 수 찾기 (0) | 2023.07.30 |