[Python]BaekJoon.AC
[Python]백준 BaekJoon.AC 2609 : 최대공약수와 최소공배수(유클리드 호제법)
스뇨잉
2022. 1. 12. 19:14
728x90
728x90

유클리드 호제법을 이용해 최소공약수와 최대공배수를 구하라는 문제.
두 수 중 큰 수를 작은 수로 나누고, 그 나머지로 원래 큰 수를 대신한다.
둘 중 한쪽이 0이 될 때까지 실행하며 다른 값이 최대공약수다.
원래 두 수를 곱한 값에서 최대공약수를 나누면 최소공배수가 된다.
원리는 알지만 늘 신기하다!ㅋㅋㅋ
그리고 그 원리를 늘 다시 까먹는다.
다시 공부하고 신기해하고 반복..
최소공배수 구하는 건 새로워서 이 방법으로 해봤다.
참신하고 신기하다..
A, B = map(int, input().split())
copyA, copyB = A, B
while not (A==0 or B==0):
if max(A, B) == A:
A = A % B
else:
B = B % A
result = max(A, B)
print(result)
print(copyA * copyB // result)728x90
728x90