유클리드 호제법

박준영·2021년 6월 17일
0
post-custom-banner

호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.

2개의 자연수 a, b에 대해서 ab로 나눈 나머지를 r이라 하면(단, a > b),
ab의 최대공약수는 br의 최대공약수와 같다.

이 성질에 따라, br로 나눈 나머지 r'를 구하고, 다시 rr'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 ab의 최대공약수이다.

def gcd(a, b):
    while b > 0:
        a, b = b, a % b
    return a

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

(최소공배수 x 최대 공약수) = gcd^2 * a * b [a, b은 서로수] => a * b
를 이용한 방법이다.

def lcm(a, b):
    return a * b / gcd(a, b)
post-custom-banner

0개의 댓글