최근 수정 시각 : 2022-06-16 22:09:09

0으로 나누기

연산
Numbers and Operations
{{{#!wiki style="word-break: keep-all; margin:0 -10px -5px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px; letter-spacing: -1px"
<colbgcolor=#765432> 수 체계 자연수 ( 홀수 · 짝수 · 소수 · 합성수 ) · 정수 · 유리수 ( 정수가 아닌 유리수 ) · 실수 ( 무리수 · 환원 불능 · 초월수 ) · 복소수 ( 허수 ) · 사원수
표현 숫자 ( 아라비아 숫자 · 로마 숫자 · 그리스 숫자 ) · 기수법 · 진법 ( 십진법 · 이진법 · 8진법 · 12진법 · 16진법 · 60진법 ) · 분수 ( 분모 · 분자 · 기약분수 · 번분수 · 연분수 · 통분 · 약분 ) · 소수 ( 무한소수 )
연산 사칙연산 ( 덧셈 · 뺄셈 · 곱셈 구구단 · 나눗셈 ) · 역수 · 절댓값 · 제곱근 ( 이중근호 ) · 거듭제곱 · 로그 ( 상용로그 · 자연로그 ) · 검산
방식 암산 · 세로셈법 · 주판 · 산가지 · 네이피어 계산봉 · 계산기
용어 이항연산 · 항등원과 역원 · 교환법칙 · 결합법칙 · 분배법칙
기타 수에 관련된 사항 ( 0과 1 사이의 수 · 음수 ) · 혼합 계산 ( 48÷2(9+3) · 111+1×2=224 · 2+2×2 ) · 0으로 나누기 · 0의 0제곱 }}}}}}}}}
[math(y÷0)]을 계산한 결과
파일:콴다_0으로 나누기.jpg
파일:Photomath_0으로 나누기.jpg
콴다에서 Photomath에서
파일:0으로 나누기 수학 해결사.png
파일:제수 0 카스.jpg
수학해결사에서 TI-Nspire CX II CAS(공학용 계산기)에서
언어별 명칭
<colbgcolor=#EEE,#212121> 영어 division by zero
일본어 ゼロ[ruby(除算, ruby=じょさん)]

1. 개요
1.1. 더 자세한 설명
2. 수학에서 엄밀한 정의3. 프로그램에서 0으로 나누기4. 기타
4.1. 창작물에서

[clearfix]

1. 개요

EBS 중학 수학강사 이지연이 만든 0으로 나눌 수 없는 이유를 설명한 영상이다. 참고해보면 바로 이해가 될 것이다.

0 제수()로 하여 어떤 수를 나눗셈하는 행위. 그러나 0이라는 수의 특성상 이는 수학적으로 성립되지 않는 개념이다. 0으로 나누기를 허용하게 되면 무연근을 진짜 근으로 오해하거나, 1=2가 참이 되는 등, 수학의 기초 그 자체가 무너진다.

쉽게 설명하면 이렇게 된다.
1. 나눗셈은 나눌 수에 나누는 수를 몇 번 뺄 수 있는지 계산하면 된다.
2. ( 무한은 숫자가 아니지만) 그 어떤 수도 0으로는 계속, 그러니까 무한번 뺄 수 있다.
3. 그렇다면 나눈 결과를 나누는 수와 곱하고 나머지를 더하면 나누었던 수가 되어야 하지만 0으로 곱하면 무조건 결과는 0이 되고 나머지는 없으므로 이 식은 성립하지 않는다.

1.1. 더 자세한 설명

나눗셈이라는 연산은 '뺄셈의 반복'이다. 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으로 나누기를 정의한다.[1] '0으로 나누기가 불가능하다'라고 이야기할 때에는 보통 고등학교까지 배우는 복소수까지를 전제하고 이야기한다. 정말 수학과 전공연역으로 넘어가서 나눗셈을 다루면 애초에 수의 개념과 연산의 개념부터 시작해서 교과과정에서 배운 것을 거진 다 갈아엎어야 한다. 본 문서에서는 정규 교과과정과 부합하는 내용을 다루며, 이를 넘어가는 부분은 항목 말미에 따로 추가한다.

2. 수학에서 엄밀한 정의

'0으로 나누기'를 정의하기에 앞서 '나눗셈'을, 그보다 앞서 '수'를 정의할 필요가 있다.

수학에서 '수'를 정의하는 것의 제일 처음은 ZFC 공리계를 통한 자연수의 정의이다. 자연수는 같은 자연수간의 덧셈과 곱셈이 정의되는 수이다. 여기서 자연수를 정수로 확장하면 정수 간의 뺄셈도 정수가 되어 뺄셈의 연산이 추가로 닫히게 되고, 또 다시 이를 확장하여 유리수를 정의하고 나면 정의에 따라 모든 나눗셈의 결과는 유리수가 되므로 나눗셈의 연산이 닫히게 되어 자유롭게 나눗셈을 수행할 수 있다. 자연수에서도 나눗셈을 정의할 수는 있지만, 이는 '7을 3으로 나누면 몫이 2이고 나머지가 1이다'와 같은 제한적이고 직관적인 수준을 벗어날 수 없으므로 여기에서는 부적절하다. 이런 것들은 의 조건을 만족시키지 않는 에 속한다. 고급 수학으로 가면 '유한 체'나 'p진 정수' 같은 괴이쩍은 것들이 존재하긴 한다.

이제 유리수나 실수에서 나눗셈은 '그 수의 역원을 곱하는 것'으로 정의된다. 예를 들어 [math( a\div b)] 는 b의 곱셈에 대한 역원 [math( b^{-1})] 를 구해서 이를 a에 곱하는 것과 같다. 즉 [math( a\div b \equiv a\cdot b^{-1})] 이다. 그러므로, 0으로 나눈다는 것은 0에 대한 곱셈의 역원을 구해서 곱하는 것과 같다.

곱셈의 역원은 곱해서 곱셈의 항등원이 되는 수이다. 즉 [math( b\cdot b^{-1} = 1 )] 이다. 이제 0의 역원을 구하기 위해 [math( b^{-1} )] 대신 [math( x )] 로 치환하고, [math( b = 0 )] 을 대입하자. 그러면 [math( 0\cdot x = 1 )] 와 같은 방정식이 나온다. 그런데 이 방정식은 유리수/실수 해가 존재하지 않는다. 심지어는, 복소수나 사원수 체계에서도 이 없다. 0과 곱해서 0이 되지 않는 새로운 수 체계도 만들 수 있으나 이러한 수 체계는 환이 될 수 없다.[2] 따라서 0환이 아닌 환에서는 0에 대한 곱셈의 역원이 존재하지 않으므로, 0으로 나눈다는 연산은 나눗셈의 정의에 의해 시행이 불가능하다. 여담으로 1은 곱셈의 항등원이므로 0환은 [math( x = 1\cdot x = 0\cdot x = 0)]이 되어 수가 0밖에 없는 수체계다. 이래서 0환을 자명환(trivial ring), 직역시 하찮은 환이라 부른다.

수학에서 말하는 특이점이 대부분 이 경우이다. [math(1/x^a)]([math(a)]는 임의의 양수), [math(\mathrm{Si}(x))], [math(\mathrm{Ci}(x))]( 삼각 적분 함수), [math(\mathrm{Ei}(x))]( 지수 적분 함수, 이상 [math(x=0)]이 특이점), [math(\mathrm{li}(x))]( 로그 적분 함수, [math(x=1)]이 특이점) 등에서 0으로 나누게 되는 특이점을 찾을 수 있다.

그래서 결론은 0을 무한대, 0, 무한소 등의 특수한 것이 아닌 다른 것으로 나누면 그 값은 항상 0이고, 무한소를 제외한 0을 초과한 수 나누기 0은 항상 무한대이고, 0 나누기 0은 일반적으로 정의될 수 없다는 것이다.

3. 프로그램에서 0으로 나누기

파일:Screenshot_20201119-003707.png
파일:Screenshot_20201120-221732_Calculator.jpg
구글 계산기에서의 결과 삼성 계산기에서의 결과[3]
계산기 컴퓨터 등에 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으로 나누면 에러를 출력하는 대신, 양 또는 음의 무한대(Infinity) 또는 NaN(Not a number)을 결과값으로 리턴하기도 한다. 어떤 상황에서도 프로그램이 죽지 않는 환경을 만들기 위해서 필요하다.
20세기 중반에 사용하던 기계식 계산기에서 0으로 나눴을 때 발생하는 현상.
0으로 나누자 계산기가 멈추지 않고 계속 작동하는 것을 볼 수 있다. 이 계산기에서는 0으로 나누기 오류에서 빠져나가기 위해 "DIV STOP(나눗셈 정지)" 레버가 따로 달려 있다. 고의든 실수든 0으로 나누기를 해서 무한 루프에 빠지는 상황을 대비하기 위한 것.

과거 운영체제들에서 프로그램이 0으로 나누기를 시전하면 커널 패닉에 빠졌다. 윈도우 9x 계열에서는 오류를 잡지 못하면 블루스크린이 뜬다.[5] 요즘 운영체제들은 프로그램만 죽고 OS는 영향을 받지 않는다.

미 해군의 타이콘데로가급 순양함 CG-48 요크타운 호도 1997년 엔진 제어 프로그램에서 0으로 나누기 버그가 일어나는 바람에 바다 위에 무려 3시간 동안 고철처럼 떠있기도 했다.

4. 기타

  • 0을 0으로 나누는 것[math(\displaystyle \left ( \frac{0}{0} \right ))]도 똑같이 정의되지 않는다. 무한 곱하기 0, 무한을 무한으로 나누는 것, 무한에서 무한을 빼기도 같은 원리다. 다만, 이를 변형하여 [math(0\cdot x = 0)]이라는 방정식의 해를 구하는 것이라면, 이는 모든 실수 [math(x)] 에 대해서 성립하므로 ' 부정'이라고 표현한다. [math(0\cdot x = 1)]이라는 방정식에는 해가 하나도 없어서 ' 불능'이라고 표현하는 것과 조금 차이가 있다. 반대로 0으로 나누는 게 아닌, 0이 다른 수에 의해 나뉘는 건 가능하나 결과는 무조건 0이다. 그 까닭은 [math(a)]가 0이 아닌 복소수범위 안의 일 때, [math(\displaystyle \frac{0}{a} = b \rightarrow 0 = a \times b)]가 되어 [math(b)]는 반드시 0밖에 될 수 없기 때문이다.
  • 0에 무한대를 곱하는 것은, ' 무한대는 수가 아니므로' 애초에 정의되지 않는다. 다만, 비슷한 것이 극한에서 정의되는 경우가 있긴 하다. 극한에서[math(\displaystyle \frac{0}{0})] 꼴이나 [math(\displaystyle \frac{\infty}{\infty})] 꼴로 나오는 경우가 있는데, 이때는 진리의 로피탈의 정리로 해결되는 경우가 대부분이고 아니면 테일러 급수도 널리 쓰인다.
  • 이원수 및 분할복소수에서는 [math(\epsilon^2 = 0, \epsilon \neq 0)]으로 정의하는 멱영원, [math(j^2 = 1, j \neq 1)]로 정의하는 멱일원의 성질로 [math(\epsilon^2 = (1 + j)(1 - j) = 0)]라는 성질을 이용해서 [math(\epsilon^2)] 또는 [math((1 + j)(1 - j))]로 나눌 수 있다. 물론 이렇게 나누고 나면 더 이상 이원수나 분할복소수로 나타낼수 없는 수이므로 별 의미는 없다.[6]
  • 0으로 나누기는 아예 정의하지 않기 때문에, 유리수, 실수, 복소수 집합 사칙연산에 대해서 닫혀 있다고 본다. 임의의 유리수, 실수, 복소수를 0으로 나누었을 때의 결과가 각각 유리수, 실수, 복소수가 아닌 수가 나온다는 약속이 되어 있다면 닫혀 있다고 할 수 없겠으나, 아예 값이 '정의되어 있지 않다'는 것이다.
  • 이 사람은 0으로 나누기를 정의할 수 있다

4.1. 창작물에서

  • 창작물에서 이 계산이 개그로 쓰이며, 이 식이 적힌 부분에서 검은 구멍이 생기더니 그대로 블랙홀이 생성되어 온 세상이 그대로 어둠에 휩싸이는 개그가 존재한다.
  • 검볼에서 핸드폰을 보지 못하게 하려고 다윈이 " 시리야 0으로 나누기해"라고 하자[7] 핸드폰에서 블랙홀이 생성되었다. 그리고 리차드 워터손이 계산기를 게임으로 착각하고 0으로 나눴더니 컴퓨터가 터지는 장면이 있다.
  • MS-DOS의 편집기에서 특정한 파일을 열려고 하면 '0으로 나누었습니다'라는 오류가 뜨기도 한다.
  • 수학 귀신에선 주인공 로베르트가 '왜 0으로 나누면 안돼?'라고 굳이 질문하자, 수학귀신인 테플로탁슬은 '그러면 수학이란 세계 자체가 무너져 버린다'라며 0으로 나누기가 왜 안 되는지를 설명한다.
  • 0으로 나누기가 컴퓨터를 바보로 만들어 버린다는 것이 널리 알려지기 시작한 1990년대부터 이는 각종 창작물에서 전자기기나 그에 기반한 로봇, 안드로이드 캐릭터들을 무력화하는 수단으로 취급되었다. 최근에 와서는 현실에서 프로그래머들이 이를 쉽게 해결해 버리자 잘 다뤄지지 않게 되었다. 이 뒤에 등장한 방법은 옛날부터 쓰던 바이러스, 프로그램 수백개 실행, EMP 등이 쓰인다.
  • 수학자가 만든 카드게임인 매직 더 개더링에선 영으로 나누기란 이름으로 등장. 비용이 0만 아니라면 전장이건 스택이건 카드 하나를 손으로 돌려보내고 학습하는 효과를 가지고 있다. 그리고 금지먹었다.

[1] 수 체계를 바꾸면 익숙한 연산도 이상하게 변한다. 가령 사원수에서는 곱셈의 교환법칙이 성립하지 않는다. 0으로 나누기가 가능하려면 환구조를 포기하거나 1=0인 0환이어야하는데 전술한 Riemann Sphere는 [math(\infty=-1\times\infty)]가 되어버리므로 [math(\infty-\infty=\infty+\infty)]나 [math(0\times-\infty=0\times\infty)]가 잘 정의되지 않아 환이 아닌 경우에 속한다. [2] [math(0=0+0)]과 분배법칙을 이용해서 [math(0\cdot x = 0\cdot x + 0\cdot x)]를 얻은 뒤 양변에서 [math(0\cdot x)]를 빼면 [math(0\cdot x =0)]. [3] 아예 계산 버튼이 눌리지 않는다. 최신 버전에선 '0으로 나눌 수 없어요.'라는 토스트 메시지가 나오며, 0을 0으로 나누면 '완성되지 않은 수식입니다.'라는 토스트 메시지가 나온다. [4] [math(\displaystyle \lim_{x\rightarrow 0}(\frac{n}{x})=\infty)]으로, 제수의 절대값이 작아질 수록 몫이 커지는 데, 이것 때문인 듯하다. [5] 정확히는 그 오류를 잡았건 못 잡았건 블루스크린이 뜨는 것에 가깝다. 당시의 블루스크린은 현재의 블루스크린과 달리(정확히는 2000 부터의 블루스크린) 커널 패닉이 아닌 프로그램 오류로도 뜰 수 있었기 때문. 자세한 건 블루스크린 참조. [6] 엄밀히 말해서 이원수와 분할복소수의 덧셈, 뺄셈, 곱셈구조(환)을 망가뜨리지 않고 추가할 방법이 없다. 0으로 나누기가 가능한 환은 0환뿐이기 때문 [7] 폰의 주인은 바나나조. 실제로는 계산을 수행하지 않고 대신 쿠키 몬스터 이야기를 한다.

분류