0으로 나누기
[clearfix]
1. 개요
Division by zero
0을 제수(除數[1] )로 하여 어떤 수를 나눗셈하는 행위. 그러나 0이라는 수의 특성상 이는 수학적으로 성립되지 않는 개념이다. 0으로 나누기를 허용하게 되면 무연근을 진짜 근으로 오해하거나, '''1=2'''가 참이 되는 등, 수학의 기초 그 자체가 무너진다.
나눗셈이라는 연산은 '뺄셈의 반복'이다. a÷b=c는 a를 0으로 만들기 위해 a에서 b를 빼는 것을 반복한 횟수가 c인 것이다. 예를 들면, 12÷4=3는 12에서 4를 빼는 것을 3회 반복하면 0이 된다는 뜻이다. 45÷5=9의 경우, 45-5=40, 40-5=35, ..., 이런 식으로 45에서 5를 9번 빼주면 0이 된다는 뜻이다. 즉, 임의의 수를 0으로 나눈다는 것은 해당 수에서 0을 뺀 횟수를 세는 것과 동일하다. 그런데 0은 덧셈에 대한 항등원이므로, 아무리 0으로 뺄셈을 해도 값이 변하지 않아 연산의 의미가 없어진다. 예를 들어 1÷0=을 뺄셈으로 풀어 생각하면, 1-0=1, 1-0=1...만 무한 반복하게 되며 이런 식으로는 영원히 답이 나올 수 없다.
수 체계를 바꾸면 0으로 나누기가 성립할 수도 있다. 가령 Riemann Sphere에서는 무한이 숫자로 간주되고 이를 이용하여 0으로 나누기를 정의한다. [2] '0으로 나누기가 불가능하다'라고 이야기할 때에는 보통 고등학교까지 배우는 복소수까지를 전제하고 이야기한다. 정말 수학과 전공연역으로 넘어가서 나눗셈을 다루면 애초에 수의 개념과 연산의 개념부터 시작해서 교과과정에서 배운 것을 거진 다 갈아엎어야 한다. 본 문서에서는 '''정규교과 과정과 부합하는''' 내용을 다루며, 이를 넘어가는 부분은 항목 말미에 따로 추가한다.
2. 수학에서 엄밀한 정의
'0으로 나누기'를 정의하기에 앞서 '나눗셈'을, 그보다 앞서 '수'를 정의할 필요가 있다.
수학에서 '수'를 정의하는 것의 제일 처음은 ZFC 공리계를 통한 자연수의 정의이다. 자연수는 같은 자연수간의 덧셈과 곱셈이 정의되는 수이다. 여기서 자연수를 정수로 확장하면 정수 간의 뺄셈도 정수가 되어 뺄셈의 연산이 추가로 닫히게 되고, 또 다시 이를 확장하여 유리수를 정의하고 나면 정의에 따라 모든 나눗셈의 결과는 유리수가 되므로 나눗셈의 연산이 닫히게 되어 자유롭게 나눗셈을 수행할 수 있다. 자연수에서도 나눗셈을 정의할 수는 있지만, 이는 '7을 3으로 나누면 몫이 2이고 나머지가 1이다'와 같은 제한적이고 직관적인 수준을 벗어날 수 없으므로 여기에서는 부적절하다. 고급 수학으로 가면 '유한 체'나 'p진 정수' 같은 괴이쩍은 것들이 존재하긴 한다. 이런 것들은 체의 조건을 만족하지 않는 군에 속한다.
이제 유리수나 실수에서 나눗셈은 '그 수의 역원을 곱하는 것'으로 정의된다. 예를 들어 $$ a\div b$$ 는 b의 곱셈에 대한 역원 $$ b^{-1}$$ 를 구해서 이를 a에 곱하는 것과 같다. 즉 $$ a\div b \equiv a\cdot b^{-1}$$ 이다. 그러므로, 0으로 나눈다는 것은 0에 대한 곱셈의 역원을 구해서 곱하는 것과 같다.
곱셈의 역원은 곱해서 곱셈의 항등원이 되는 수이다. 즉 $$ b\cdot b^{-1} = 1 $$ 이다. 이제 0의 역원을 구하기 위해 $$ b^{-1} $$ 대신 $$ x $$ 로 치환하고, $$ b = 0 $$ 을 대입하자. 그러면 $$ 0\cdot x = 1 $$ 와 같은 방정식이 나온다. 그런데 이 방정식은 유리수/실수 해가 존재하지 않는다. 즉 유리수(또는 실수)에서는 0에 대한 곱셈의 역원이 존재하지 않으므로, 0으로 나눈다는 연산은 나눗셈의 정의에 의해 시행이 불가능하다.
수학에서 말하는 특이점#s-2.1이 대부분 이 경우이다. $$1/x^a$$($$a$$는 임의의 양수), $$\mathrm{Si}(x)$$, $$\mathrm{Ci}(x)$$(삼각 적분 함수), $$\mathrm{Ei}(x)$$(지수 적분 함수, 이상 $$x=0$$이 특이점), $$\mathrm{li}(x)$$(로그 적분 함수, $$x=1$$이 특이점) 등에서 0으로 나누게 되는 특이점을 찾을 수 있다.
3. 프로그램에서 0으로 나누기
계산기나 컴퓨터 등에 0으로 나누기를 시키면 "0으로는 나눌 수 없습니다"라는 메시지를 보낸다. 계산기에서 나눗셈은 일반적으로 '뺄셈의 반복'으로 구현했기 때문, 예를 들면 8÷2를 하면 피제수에서 제수를 0보다 작거나 같게 될때까지 계속 뺀다. 즉 8-2-2-2-2... 를 하면 0이 되는데, 이때 -2를 4번 반복했으므로 몫은 4가 되는 식. 이래서 대부분의 경우 계산기나 컴퓨터에서 나눗셈은 몫만 구한다. 근데 만약 0으로 나눈다면 -0을 해야하는데, 어떤 숫자에서 0을 빼봤자 그 숫자는 아무 변화도 일어나지 않는다. 하지만 계산원리상 피제수가 0이 될때까지 제수를 빼야 하니까, 계속 -0을 하는 것으로 무한 루프가 되어 영원히 끝나지 않으며, 같은 작업만 무한 반복하다가 과열로 물리적인 손상까지 일으킬 수 있다. 그래서 나눗셈을 하기 전에 제수가 0인지 확인하여, 만약 0이면 즉시 division by zero 또는 divided by zero 에러를 출력하게 된다. 엑셀에서는 숫자를 0으로 나눌 시 '#DIV/0!' 이라는 오류가 뜬다. 삼성 갤럭시 S2로 나누기 0을 하면 무한루프 기호를 출력한다.[4] 아이폰은 오류라고 뜬다.
일부 언어에서는 0으로 나누면 에러를 출력하는 대신, NaN(Not a number)을 결과값으로 리턴하기도 한다. 어떤 상황에서도 프로그램이 죽지 않는 환경을 만들기 위해서 필요하다.
0으로 나누자 계산기가 멈추지 않고 계속 작동하는 것을 볼 수 있다. 이 계산기에서는 0으로 나누기 오류에서 빠져나가기 위해 "DIV STOP(나눗셈 정지)" 레버가 따로 달려 있다.
과거 운영체제들에서 프로그램이 0으로 나누기를 시전하면 커널 패닉에 빠졌다. 윈도우 9x 계열에서는 오류를 잡지 못하면 블루스크린이 뜬다. 요즘 운영체제들은 프로그램만 죽고 OS는 영향을 받지 않는다.
미 해군의 타이콘데로가급 순양함 CG-48 요크타운 호도 1997년 엔진 제어 프로그램에서 0으로 나누기 버그가 일어나는 바람에 바다 위에 무려 3시간 동안 고철처럼 떠있기도 했다.
4. 기타 - 수학
- 0을 0으로 나누는 것$$\displaystyle \left ( \frac{0}{0} \right )$$도 똑같이 정의되지 않는다. 다만, 이를 변형하여 $$0\cdot x = 0$$이라는 방정식의 해를 구하는 것이라면, 이는 모든 실수 $$x$$ 에 대해서 성립하므로 '부정'이라고 표현한다. $$0\cdot x = 1$$이라는 방정식에는 해가 하나도 없어서 '불능'이라고 표현하는 것과 조금 차이가 있다. 반대로 0으로 나누는 게 아닌 0이 다른 수에 의해 나뉘는 건 가능하나 결과는 무조건 0이다.
- 0에 무한대를 곱하는 것은, '무한대는 수가 아니므로' 애초에 정의되지 않는다. 다만, 비슷한 것이 극한에서 정의되는 경우가 있긴 하다. 극한에서$$\displaystyle \frac{0}{0}$$ 꼴이나 $$\displaystyle \frac{\infty}{\infty}$$ 꼴로 나오는 경우가 있는데, 이때는 진리의 로피탈의 정리로 해결되는 경우가 대부분이고 아니면 테일러 급수도 널리 쓰인다.
- 비슷한 것으로 0의 0제곱이 있다.
- 이원수 및 분할복소수에서는 $$\epsilon^2 = 0, \epsilon \neq 0$$으로 정의하는 멱영원, $$j^2 = 1, j \neq 1$$로 정의하는 멱일원의 성질로 $$\epsilon^2 = (1 + j)(1 - j) = 0$$라는 성질을 이용해서 $$\epsilon^2$$ 또는 $$(1 + j)(1 - j)$$로 나눌 수 있다. 물론 이것은 정말로 특수한 케이스에 속한다.
5. 기타 - 창작물
- 창작물에서 이 계산이 개그로 쓰이며, 이 식이 적힌 부분에서 검은 구멍이 생기더니 그대로 블랙홀이 생성되어 온 세상이 그대로 어둠에 휩싸이는 개그가 존재한다.
- 검볼에서 핸드폰을 보지 못하게 하려고 다윈이 "시리야 0으로 나누기해"라고 하자[5] 핸드폰에서 블랙홀이 생성되었다. 그리고 리차드 워터손이 계산기를 게임으로 착각하고 0으로 나눴더니 컴퓨터가 터지는 장면이 있다.
- MS-DOS의 편집기에서 특정한 파일을 열려고 하면 '0으로 나누었습니다'라는 오류가 뜨기도 한다.
- 수학 귀신에선 주인공 로베르트가 '왜 0으로 나누면 안돼?'라고 굳이 질문하자, 수학귀신인 테플로탁슬은 '그러면 수학이란 세계 자체가 무너져 버린다'라며 0으로 나누기가 왜 안 되는지를 설명한다.
- 0으로 나누기가 컴퓨터를 바보로 만들어 버린다는 것이 널리 알려지기 시작한 90년대부터 이는 각종 창작물에서 전자기기나 그에 기반한 로봇, 안드로이드 캐릭터들을 무력화하는 수단으로 취급되었다. 최근에 와서는 현실에서 프로그래머들이 이를 쉽게 해결해 버리자 잘 다뤄지지 않게 되엇다.
[1] 남동생의 아내라는 뜻의 제수(弟嫂)와는 사실 동음이의어 관계'''도 아니다.''' 동음이의어의 '동음' 판단 기준은 '''발음의 동일성'''인데, 除數는 [제쑤\] 이렇게 된소리가 들어가지만, 弟嫂는 [제ː수\] 이렇게 된소리가 안 들어갈 뿐더러 장음이 들어간다. 따라서 이 두 단어는 동철이음이의어(同綴異音異義語)라고 봐야 한다(...).[2] 수 체계를 바꾸면 익숙한 연산도 이상하게 변한다. 가령 사원수에서는 곱셈의 교환법칙이 성립하지 않는다.[3] 아예 계산 버튼이 눌리지 않는다. 최신 버전 에선 '0으로 나눌수 없어요'라는 팝업창이 나온다.[4] $$\lim_{x\rightarrow 0}(\frac{n}{x})=\infty$$인데 이때문인듯 하다.[5] 폰의 주인은 바나나조.