본문 바로가기
알고리즘

정수에 대한 유클리드 호제법

by 자바지기 2021. 9. 7.
반응형

a >= b이고 a를 b로 나눈 나머지를 r 이라고 하자

 

유클리드 호제법의 가장 핵심은 다음과 같다.

 

a, b의 최대공약수를 (a, b)

b, r의 최대공약수를 (b ,r) 이라고 하면

(a, b) = (b, r) 이 성립한다.


예를 들어,

 

(48, 18)  = (18, 12) = (12 , 6) = (6, 0) = 6 

 

처럼 쓸 수 있다.

 

즉 , 뒤의 자리가 0이 될 때 까지 연산을 진행한다.


만약 두 수가 서로소라면

 

(17, 13) = (13, 4) = (4, 1) = (1, 0)  = 1 

 

다음과 같이 나타남을 알 수 있다. 

서로소 또한 결과가 잘 나타남을 알 수 있다.


이제 유클리드 호제법을 코드로 나타내면 다음과 같다.

 

def gcd(m, n):

    if m < n :

        m,n = n, m

    if n == 0:

        return m

    if m % n == 0:

        return n

    return gcd(n, m%n)

 

 

반응형

'알고리즘' 카테고리의 다른 글

[파이썬] asterisk( * )  (0) 2021.10.19
[파이썬] bisect 라이브러리  (0) 2021.09.26
[파이썬] heapq 라이브러리  (0) 2021.09.26
[파이썬] itertools 라이브러리  (0) 2021.09.26
[파이썬] Counter 클래스 사용법  (0) 2021.09.08

댓글