안녕하세요,,

오늘은 유클리드 호제법입니다.

유클리드 호제법은 지난번과 같이 문자와 집합 기호로 여러분을 혼동시키지 않기 위해 최대한 말로 풀어 설명하도록 하겠습니다.(그래도 이해가 안 갈수 있습니다. 괜찮아요 님만 그런거 아닙니다)

시작해 볼까요?

 

유클리드 호제법

 

유클리드 호제법은 a = bq + r 일때 (a,b) = (b,r) 이라는 정리입니다.

시작부터 멘붕이 오네요. 다시 설명하겠습니다.

'a를 b로 나눈 몫이 q, 나머지가 r 일때 a와 b의 최대공약수는 b와 r의 최대공약수와 같다' 라는 뜻이었습니다.

증명합시다.

 

pf)

먼저 a 와 b의 최대공약수를 d, b와 r의 최대공약수를 e라고 합시다.

 

i) 그렇다면 d|a, d|b 이므로

  d|a-bq, a-bq = r 이므로 d|r

  ->d는 b와 r의 공약수, e는 b와 r의 최대공약수

  ∴ d|e (최대공약수의 약수가 공약수이기 때문)

ii) 두번째로 위와 똑같은 방법으로 e에 적용시킬 겁니다.

  e|b, e|r => e|bq+r => e|a

  -> e는 a, b 의 공약수 / d는 a, b의 최대공약수

  ∴ e|d

iii) d|e, e|d이므로 d = e 로 증명 끝.

 

<더 쉽게>

 

127과 47의 최대공약수를 구하고 싶으면 위와 같이 셋팅을 한 다음에 계산을 하면 됩니다.

파란색 화살표는 |와 | 사이에 있는 두 수를 나누었을 때의 몫이고, 화살표가 가리키는 숫자 옆(| 안에 있는 숫자)는 나머지입니다.

이 나누는 과정을 반복하면 두 수가 서로소 인지를 판별할 수 있습니다.

 

이번거는 어렵지 않았을 겁니다. '|' 기호만 들어가서 좀 햇갈릴 수 있을 뿐이지 개념은 중 1꺼 밖에 안 씁니다.

그래서! 유클리드 알고리즘도 같이 소개하려고 합니다.

 

유클리드 알고리즘

 

유클리드 알고리즘은 유클리드 호제법을 알고리즘화 한 것입니다.

공식으로 나타내면,,

(a,b) = (b,r) = ... = (r',r'')에서 r''이 0이 되는 경우 = (a,b) = r'

어려운거 다 압니다.

쉽게 말하면 아까 한 유클리드 호제법을 0이 될 때 까지 반복한다는 것입니다.

이걸 이용해서 코드를 짤 수 있는데요, 코드는 인터넷 찾아보면 나옵니다(쓰기 귀찮아요)

 

 

 

저의 궁극적인 목표는 정수를 이용해서 코드업 1298번을 푸는 겁니다.

1298번을 푸는 데에는 '확장 유클리드 알고리즘'이 필요한데요..

뭔가 이름이 비슷한 걸 보니 연관성이 있을 것 같고, 실제로 연관성이 있습니다.

이번 글에 그걸 몰아넣기에는 좀 그렇고, 다음 글에 확장 유클리드 알고리즘과 디오판틴 부정방정식을 푸는 방법으로 찾아뵙겠습니다.

안녕히 계세요,,

 

 

'수학' 카테고리의 다른 글

나눗셈 정리  (0) 2020.08.18

+ Recent posts