def gcd(a,b):
while a > 0:
r = a%b
if r == 0:
return b
else:
a = b
b = r
이렇듯, 만약 나머지인 r이 0 이 되는 순간, a와 b 중 b가 최대공약수가 되기에 b를 반환해준다.
def lcm(a,b): # 최소공배수는 두 수의 곱을 최대공약수로 나눈 것과 같다.
return int((a*b)/ gcd(a,b))
두 숫자 a,b를 곱해주면 최대공약수가 2번 곱해지고, 나머지 요소들은 최소공배수를 구하는 과정에서 빠지면 안되는 요소들임이 분명하다. 즉, a와 b를 최대공약수를 1번만 넣어주면 최소공배수를 만들 수 있다고 판단할 수 있다. 따라서 두 수의 곱을 최대공약수로 한번 나눈 값이 최소공배수다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=papers&logNo=140207307545