하루살이 개발자

[알고리즘] 최대공약수(유클리드 호제법) / 최소 공배수 본문

CS/알고리즘

[알고리즘] 최대공약수(유클리드 호제법) / 최소 공배수

하루살이 2022. 2. 23. 11:19

1. 최대공약수 구하기

 

- 두 개의 자연수에 대한 최대공약수를 구하는 유클리드 호제법 알고리즘 이용한다.

- 유클리드 호제법

   ->두 자연수 a, b에 대하여(a > b) a를 b로 나눈 나머지를 R이라 하면, a와 b의 최대공약수는 b와 R의 최대공약수와 같다.

- 유클리드 호제법의 아이디어를 그대로 재귀 함수로 작성

 

 

 

def gcd(a, b):
    if a % b == 0:
        return b
    else:
        return gcd(b, a % b)
print(gcd(192, 162))

 

2. 최소공배수 구하기

 

- 서로 다른 수 a, b의 배수중에서 공통되는 배수 중에 가장 작은 값을 의미한다.

- 최소공배수는 a, b의 곱을 a, b의 최대 공약수로 나누면 된다.

 

def lcm(a, b):
    return a * b / gcd(a, b)