정의에 얽매이지 않는 것도 필요하다. - 유클리드 호제법과 스팀잇

in #kr7 years ago

안녕하세요! ryanhan입니다.
오늘은 최대공약수를 구하는 알고리즘인
유클리드 호제법에 대하여 이야기해보려고 합니다.
157.png

최대공약수 구하기

최대공약수는 초등학생때부터 배우는 아주 중요한 개념입니다.
최대공약수를 정의하자면,
0이 아닌 두 수가 있을 때, 둘을 동시에 나누는 최대의 수라고 할 수 있습니다.
이 최대공약수를 구하는 방법은 다음과 같습니다.
예를 들어, 105와 63이 있을 때,
두 개의 수를 동시에 나누는 수를 찾아 나눠봅니다.
위의 표처럼, 3과 7이 있다는 것을 알 수 있습니다.
그렇게 두 수를 동시에 나눈 3과 7의 곱인 21이 최대공약수가 됩니다.
777.png

유클리드 호제법

그런데, 숫자가 매우 커지면 최대공약수를 구하기 굉장히 힘듭니다.
예를 들어, 7007과 2457의 최대공약수를 구하는 것은 힘듭니다.
두 수를 동시에 나눌 수 있는 수를 찾기 위한 과정이 복잡하기 때문입니다.
이럴 때는 유클리드 호제법을 이용하면 간단합니다.
유클리드 호제법은 7007과 2457을 동시에 나누는 수를 찾지 않습니다.
대신에, 두 수를 빼 봅니다.
이걸 수식으로 나타내면, 7007 – 2457 = 4550 이 됩니다.

여기서 생각해봅니다.
7007과 2457을 동시에 나누는 수는 4550도 동시에 나눠야만 합니다.
3의 배수끼리 빼면, 그 결과도 3의 배수인 것과 같은 원리입니다.
결국 이 논리를 이용하여,
(7007과 2457의 최대 공약수)=(4550과 2457의 최대 공약수)=
(2457과 2093의 최대공약수)= … = (182와 91의 최대 공약수) = 91이 됩니다.
이런 방식으로 최대공약수를 구하는 것이 유클리드 호제법입니다.

유클리드 호제법과 스팀잇

유클리드 호제법은 큰 수의 최대 공약수를 쉽게 구할 수 있게 만들어주었습니다.
이런 알고리즘은 어떻게 탄생할 수 있었을까요?
저는 ‘정의에 얽매이지 않는 것’이 핵심이었다고 생각합니다.
최대 공약수의 정의는 앞에서 소개 했듯이
‘두 수를 동시에 나누는 최대의 숫자’ 입니다.
이 정의에 얽매여 있었다면, ‘두 수’를 동시에 나누는 숫자만 찾고 있었을 것입니다.
유클리드 호제법은 ‘두 수’라는 정의에서 벗어나
‘두 숫자의 차이’를 생각해냈기에 탄생할 수 있었다고 생각합니다.

감히 말씀드려보자면, 스팀잇에서는 어떨까요?
스팀잇의 정의는 ‘생각의 가치’를 보장하는 커뮤니티라고 할 수 있겠습니다.
생각의 가치에 집중하는 것은 물론 중요합니다.
그것이 스팀잇이 추구하는 방향이니까요.
하지만, 스팀잇의 규모가 커지고, 글이 많아지면
생각의 가치를 보장하는 것은 점점 어려워질 것입니다.
이미 지금도 많이 어려워졌지요.
숫자로 치면 63과 105를 풀다가 7007과 2457을 만난 느낌입니다.
이럴 때일수록, 정의에 얽매이지 않고
약간 떨어져서 지켜보는 것이 필요하다고 생각합니다.
혹시, 더 합리적이고 간단한 방법이 있을지도 모르니까요.

오늘은 유클리드 호제법을 다뤄봤습니다.
긴 글 읽어주셔서 너무 감사합니다.
ryanhan이었습니다!

Sort:  

스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.

@clarkgold 오늘로써 일주일간의 보팅이 끝나는군요!!!
오늘은 유클리드 호제법을 다뤄봤습니다.
일주일간 감사했습니다!

오늘도 좋은 포스팅 잘 보고 갑니다^^

아...수포자로 살아온지 어언 30년 ㅡㅡ; 아들녀석 수학공부하면 도망다녀요 ㅋㅋ

제가 설명을 못해서 그런 것 같습니다. ㅠㅠㅠ
아들분에게 이런거 가르쳐주시면 좋아할 것 같은데요 ㅎㅎㅎ
아들분은 수학 좋아하시나요ㅋㅋㅋ?

다행히 저를 안닮아서 재미있어 하네요 ^^;

오랜만에 보는 최대공약수네요! 초등학교이후로는 거의 본적 없는 것 같은데 ..ㅎㅎ
유클리드 호제법과 같은 수학적 개념을 이렇게 철학적으로 풀어낼 수 있다니
멋진 풀이인 것 같습니다.

복잡한 최대공약수를 구할 일이 잘 없긴 하죠 ㅎㅎㅎ
생각의 가치에 대해 또 이야기가 나오길래 나름 적어봤습니다!
감사합니다.

와.. 이 나이 먹도록 처음 알았네요.
살면서 쓸 일은 없었지만 ㅎㅎㅎㅎ

이렇게 큰 수의 최대공약수를 구할일이 없긴하죠 ㅎㅎㅎㅎ
그래도 혹시! 구할 일이 있다면 정말 좋은 방법입니다.

이걸 학원에서 설명해즐 때 실제 예를 들어서 설명해주면 이해를 잘하는 편입니다 지금 교과과정에는 삭제되었지만 이전에는 두수의 합과 차에도 최대공약수가 존재한다라는 사실이 나와있었으니까요 생각의 가치는 함부로 매길수는 없는거 같습니다 어려워요 상대적인 부분도 있다고 생각이 들구요 ^^

kaine님 안녕하세요! 맞아요. 제가 고등학생때만 해도 정석에 있었던 것 같은데 요즘엔 안배우더라구요..
점점 줄어들고 있는게 아쉽습니다. 써보면 정말 재밌는 방법중에 하나인데요 ㅠㅠ
특히 유클리드 호제법은 실제로 예를 주었을 때 학생들이 이해가 잘되나봐요.
a=bq+r이런식으로 설명하면 어려운데 말이죠 ㅋㅋㅋ
좋은 의견도 감사드립니다!

저 이거!! 들어봤어요!! 이름은 들어봤는데 내용은 분명 배웠는데...유클리드 호제법이라..!!!다시 배우는 느낌이군요!(저의 기억력....) 어떤 문제를 보는 프레임을 바꾸어 새로운 시선으로 접근한다는 발상은 스팀잇에서도 보여지는게 확실한것 같아요. 지금까지 우리가 콘텐츠를 소비하는것과 생산하는것과 달리, 이제는 그 가치를 중개자가 아닌 직접 거래할수있는 것. 콘텐츠의 가치를 보팅할수있다는것 :) 하여튼 스팀잇은 대단한것 같아용

정말 재밌는 방법이긴 한데, 저만큼 복잡한 수의 최대공약수를 구할일이 잘없어서 안쓰이죠 ㅠㅠ
하지만, 말씀하셨듯이 어떤 정의에서부터 벗어나서 생각하여 접근하는 발상! 꼭 필요한 능력이죠.
스팀잇도 하나의 발상의 전환이죠 ㅎㅎㅎ 댓글 정말정말 감사드립니다.

1일 1회 포스팅!
1일 1회 짱짱맨 태그 사용!
^^ 즐거운 스티밋의 시작!

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63188.04
ETH 2570.49
USDT 1.00
SBD 2.79