Algorithms
백준 2609. 최대공약수와 최소공배수
Brian Go
2022. 6. 9. 03:13
a와 b가 있을 때, 최대공약수야 반복문을 통해 구하면 되고, 최소공배수는 (a/gcd)*(b/gcd)*gcd로 구할 수 있다는 것을 알고 있으면 쉽다.
a, b = map(int, input().split())
mx = max(a, b)
mn = min(a,b)
if mx == mn:
print(mx)
print(mx)
exit()
gcd = 1
for i in range(mn, 1, -1):
if mx%i==0 and mn%i==0:
gcd = i
break
print(gcd)
print(int((mx/gcd) * (mn/gcd) * gcd))
반복을 최소화하기 위해 반복문을 입력의 작은 값부터 2까지 돌아 최대공약수를 찾는다. 찾으면 바로 브레이크를 걸어 반복을 탈출하고, 출력한다.
만약 a와 b가 같은 경우에는 최대공약수도 최소공배수도 자기 자신이므로 출력하고 프로그램을 종료한다.

반복을 2에서부터 시작하는 방법과 끝에서부터 시작하는 방법을 해봤는데 2에서 시작하는 게 더 빨랐다.