https://www.acmicpc.net/problem/13241
유클리드 호제법을 사용하여 푸는 문제다.
효율적으로 최소공약수를 구하는 방법은 유클리드 호제법을 사용하는 것이고, 이를 이용해 최소공배수도 간단히 계산할 수 있습니다.
유클리드 호제법
- 두 수 `x`와 `y`가 있을 때, `x`를 `y`로 나눈 나머지를 계속 구하면서 `y`가 0이 될 때까지 반복헌다.
- 최종적으로 남은 `x`가 최대공약수가 된다.
최소 공배수 구하는 방법
- 두 수의 곱을 최대 공약수로 나누면 최소 공배수가 나온다.
풀이
import sys
def gcd(x, y):
while y > 0:
x, y = y, x%y
return x
def lcm(x,y):
return x * y // gcd(x,y)
a, b = map(int, sys.stdin.readline().split())
print(lcm(a,b))
코드 설명
1. `gcd` 함수: 유클리드 호제법으로 최대 공약수를 계산.
2. `lcm` 함수: 두 수의 곱을 최대 공약수로 나누어 최소 공배수을 계산.
3. 마지막으로 입력받은 두 수 `a, b`의 최소 공배수를 출력.
'PS > 수학' 카테고리의 다른 글
[백준] 17103번: 골드바흐 파티션 파이썬 (0) | 2024.09.09 |
---|---|
[백준] 4134번: 다음 소수 파이썬 (1) | 2024.09.06 |
[백준]2485번: 가로수 파이썬 (0) | 2024.09.05 |
1735번: 분수 합 파이썬 (0) | 2024.09.04 |
[백준] 18110번: solved.ac 파이썬 (0) | 2024.03.02 |