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 |
댓글