알고리즘/백준
[백준] 2609번 최대공약수와 최소공배수 (Python)
wookcode
2021. 3. 13. 22:52
728x90
반응형
문제

2609번: 최대공약수와 최소공배수
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
www.acmicpc.net
코드
def gcd(a,b):
if b == 0:
return a
else:
return gcd(b, a%b)
a,b = map(int,(input().split()))
g=gcd(a,b)
lcm = g * (a//g) * (b//g)
print(g)
print(lcm)
코드설명
유클리드 호제법은 최대공약수 구하는 공식이다.
a,b의 최대공약수는 b와 a%b의 최대공약수와 같다. 즉, GCD(a, b) = GCD(b, a%b)
gcd(24,16) => gcd(16,8) => gcd(8,0)
b가 0일때 gcd = a
최소공배수 공식은 LCM = GCD * a/gcd * b/gcd
=> 6 | 24 18
ㅡㅡㅡㅡ
4 3 => 6 * 4 * 3
반응형