[Algorithm] 유클리드 호제법

728x90
반응형

- 유클리드 호제법: 2개의 자연수 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 

 

- 그냥 쉽게 말해 A = Bq + R이라는 식에서 A와 B의 최대공약수(GCD)는 B와 R의 GCD와 같다는 뜻이다.

  이 알고리즘을 사용하면 빠르게 A와 B의 최대공약수를 구할 수 있다.

 

- 증명은 다음 블로그에서 잘 정리해놓았다.

m.blog.naver.com/PostView.nhn?blogId=papers&logNo=140207307545&proxyReferer=https:%2F%2Fwww.google.com%2F

 

유클리드 호제법 증명

유클리드 호제법 증명 A와 B의 최대공약수와 B와R의 최대공약수가 같다 말뜻부터 알아봅시다. 互除法, ...

blog.naver.com

# 코드로 나타내면 다음과 같다.

- 재귀 사용

def gcd(a, b):
    if not b:
        return a
    else:
        return gcd(b, a%b)

- 반복문 사용

def gcd(m, n):
    while n:
       t = m % n
       m, n = n, t
    return m

 

(틀린 내용 있으면 댓글부탁드립니다!)

728x90
반응형
TAGS.

Comments