최소공배수는 두 개 이상의 정수의 공통 배수 중 가장 작은 정수를 말합니다.
소인수분해: 주어진 두 수 a와 b를 소인수분해합니다. 소인수분해란, 주어진 수를 소수의 곱으로 나타내는 과정입니다. 소수란 1과 자기 자신만으로 나누어지는 수를 말합니다.
모든 소수들 추출: 소인수분해된 결과에서 a와 b의 소수들을 추출합니다. 이 소수들은 a와 b의 공통된 소인수들과 공통되지 않는 소인수들로 구성됩니다.
공통된 소수들과 중복된 소수들 제거: a와 b의 소수들 중에서 공통된 소수들은 최소공배수에 한 번만 포함되어야 합니다. 따라서 모든 공통된 소수들을 최소공배수에 한 번만 남기고, 중복된 소수들은 하나씩만 남겨야 합니다.
최소공배수 계산: 최소공배수는 주어진 두 수 a와 b를 소인수분해하여 추출한 소수들을 모두 곱한 값입니다. 이때, 각 소수들은 공통된 소수는 한 번만, 그리고 중복된 소수들은 한 번씩만 곱합니다.
import math
# 두 수 a와 b의 최소공배수를 구하는 함수
def get_lcm(a, b):
gcd_result = math.gcd(a, b) # a와 b의 최대공약수를 계산합니다.
lcm_result = (a * b) // gcd_result # (a * b)를 최대공약수로 나누어 최소공배수를 계산합니다.
return lcm_result # 최소공배수를 반환합니다.
def main():
n = int(input()) # 숫자 개수를 입력받습니다.
for _ in range(n): # n번 반복합니다.
a, b = map(int, input().split()) # 두 개의 숫자를 입력받습니다.
print(get_lcm(a, b)) # 입력받은 두 숫자의 최소공배수를 계산하여 출력합니다.
if __name__ == "__main__":
main()