Skip to content

Baekjoon 5347

1. 문제

문제 확인하기

2. 최소공배수 구하기

최소공배수는 두 개 이상의 정수의 공통 배수 중 가장 작은 정수를 말합니다.

  1. 소인수분해: 주어진 두 수 a와 b를 소인수분해합니다. 소인수분해란, 주어진 수를 소수의 곱으로 나타내는 과정입니다. 소수란 1과 자기 자신만으로 나누어지는 수를 말합니다.

  2. 모든 소수들 추출: 소인수분해된 결과에서 a와 b의 소수들을 추출합니다. 이 소수들은 a와 b의 공통된 소인수들과 공통되지 않는 소인수들로 구성됩니다.

  3. 공통된 소수들과 중복된 소수들 제거: a와 b의 소수들 중에서 공통된 소수들은 최소공배수에 한 번만 포함되어야 합니다. 따라서 모든 공통된 소수들을 최소공배수에 한 번만 남기고, 중복된 소수들은 하나씩만 남겨야 합니다.

  4. 최소공배수 계산: 최소공배수는 주어진 두 수 a와 b를 소인수분해하여 추출한 소수들을 모두 곱한 값입니다. 이때, 각 소수들은 공통된 소수는 한 번만, 그리고 중복된 소수들은 한 번씩만 곱합니다.

3. 풀이 (Python, memory: 33376KB, time: 40ms)

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()