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);
}
}
최대공약수를 구하는 방법에는 유클리드 호제법이라는 것이 있다.
A / B = 몫 + C(나머지) 에서 나머지가 0이 아닐 경우,
B / C 를 반복하여 최종적으로 나머지가 0일 때 A가 두 수의 최대공약수라는 것이다.
참고 : 위키백과. 유클리드 호제법 - 예시
최소공배수 = A * B / 최대공약수
참고 : https://luran.me/275
BigInteger 자료형일 시 gcd 함수가 기본적으로 제공된다.
단, 이 경우 BigInteger 자료형은 *가 아닌 .multiple()로 연산을 수행할 수 있다.