본문 바로가기
코딩테스트

최대공약수/최소공배수 - 백준 2609 [Python]

by 지구킹 2021. 7. 16.
728x90

최대공약수 (GCD )를 구하는 빠른 방법은 유클리드 호제법을 이용하면 된다.

  • a를 b로 나눈 나머지를 r이라고 했을 때
  • GCD(a,b) = GCD(b,r)과 같다.
  • r이 0이면 그때 b가 최대 공약수이다.
  • GCD(24,16) = GCD(16,8) = GCD(8,0) = 8

최소공배수 (LCM) 도 최대공약수를 구한 것과 비슷하게 적용하여 구하면 된다.

  •  LCM(A,B) = GCD(A,B) * (A/GCD(A,B)) * (B/GCD(A,B))

Example)

https://www.acmicpc.net/problem/2609

 

2609번: 최대공약수와 최소공배수

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

www.acmicpc.net

 

Answer)

def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y, x%y)
a,b = map(int, input().split())
g = gcd(a, b)
print(g)
print(a*b//g)
728x90

'코딩테스트' 카테고리의 다른 글

소수 - 백준 1929 [Python]  (0) 2021.07.16
소수 - 백준 1978 [Python]  (0) 2021.07.16
약수의 합 - 백준 17425 [Python]  (0) 2021.07.15
약수의 합 2 - 백준 17427 [Python]  (0) 2021.07.15
약수 - 백준 1037 [Python]  (0) 2021.07.15

댓글