Looks like magic. Turns out it's just bookkeeping.
처음엔 "음~" 하고 흥미가 돌고, "오?" 하고 놀라다가, "아…" 하고 원리를 깨닫는 순간 "예…" 하고 김이 살짝 빠지는 — 그런 수학들을 모았습니다. 신기해 보이지만, 알고 보면 그렇게까지 신기하진 않은 것들.
좋은 마술은 트릭을 알아도 여전히 아름답습니다. 수학에도 그런 게 있죠 — 처음 보면 마법 같은데, 뜯어보면 기발한 포장이었을 뿐 새로운 마법은 없는. 그렇다고 시시하다는 건 아닙니다. 오히려 "어떻게 포장했나"가 진짜 재미죠. 스스로를 그리는 부등식, 요일을 맞히는 공식, 그리고 머릿속 요일 점쟁이 — 셋을 차례로 해부합니다.
1986년, 제프 터퍼(Jeff Tupper)의 이름이 붙은 부등식이 있습니다.
$$ \tfrac12 \;<\; \left\lfloor \operatorname{mod}\!\left(\left\lfloor \tfrac{y}{17}\right\rfloor\, 2^{-17\lfloor x\rfloor-\operatorname{mod}(\lfloor y\rfloor,\,17)},\; 2\right)\right\rfloor $$이 부등식을 \(0\le x\lt 106\), 그리고 어떤 거대한 수 \(k\)에 대해 \(k\le y\lt k+17\)인 좁은 띠에서 색칠하면 — 화면에 바로 그 부등식의 모습이 글자 그대로 나타납니다. 자기 자신을 그리는 식이라니, 음~ 오?
비밀은 허무할 만큼 단순합니다. 이 부등식은 그림을 그리는 게 아니라 \(y\) 좌표에 숨은 수를 읽을 뿐입니다. \(\lfloor y/17\rfloor\)는 거대한 정수 하나를 꺼내고, \(2^{-\cdots}\)와 \(\operatorname{mod}\,2\)는 그 수의 특정 비트(bit) 하나를 집어내죠. 즉 픽셀 \((x,j)\)는 그 수의 \((17x+j)\)번째 비트가 \(1\)일 때만 켜집니다. 이건 만능 비트맵 플로터예요. 어떤 \(106\times17\) 흑백 그림이든, 그 그림을 비트로 적어 둔 수 \(k\)가 \(y\)축 어딘가에 반드시 있습니다.
아래에서 직접 비트맵을 그려 보세요. 칸을 칠할 때마다, "그 그림을 그리는 수" \(N\)(과 터퍼식 \(k=H\cdot N\))이 실시간으로 바뀝니다. 그림 = 수임을 눈으로 확인할 수 있죠.
여섯 자리 수 \(142857\)에 \(1\)부터 \(6\)까지 곱해 보세요.
$$ \begin{array}{ll} 142857\times1=142857 \quad& 142857\times4=571428\\ 142857\times2=285714 & 142857\times5=714285\\ 142857\times3=428571 & 142857\times6=857142 \end{array} $$여섯 결과가 모두 \(142857\)의 자리를 빙 돌린 것 — 같은 숫자, 시작점만 다릅니다! 게다가 \(\times7\)을 하면 난데없이 \(999999\). 음~ 오?
비밀은 \(142857\)이 \(1/7\)의 순환마디라는 것입니다. \(1/7=0.\overline{142857}\), \(2/7=0.\overline{285714}\), …, \(6/7=0.\overline{857142}\) — 모두 같은 여섯 자리 고리를 다른 지점에서 시작해 읽은 것뿐이죠. \(k\)를 곱하는 건 \(k/7\)의 순환마디를 읽는 것과 같으니 자리가 돕니다. \(\times7\)은 \(7/7=0.\overline{9}\)라 \(999999\). 아…
요컨대 \(142857=\dfrac{10^6-1}{7}\). 예… 그냥 \(1/7\)이었습니다. (이렇게 \(1/p\)의 순환마디가 \(p-1\)자리를 꽉 채우는 소수 \(p\)를 full reptend prime이라 하고, \(7,17,19,23,\dots\)이 그렇습니다 — \(10\)이 원시근인 소수죠.)
이런 상수가 있습니다 — \(A\approx 1.3063778838\dots\)에 대해, \(\big\lfloor A^{3^{n}}\big\rfloor\)이 모든 \(n\)에서 소수입니다.
$$ \lfloor A^{3}\rfloor=2,\quad \lfloor A^{9}\rfloor=11,\quad \lfloor A^{27}\rfloor=1361,\quad \lfloor A^{81}\rfloor=2{,}521{,}008{,}887,\ \dots $$소수를 척척 찍어 내는 마법의 상수처럼 보이죠. 음~ 오? 그런데 화살표의 방향이 반대입니다.
밀스의 정리(1947)가 보장하는 건 "그런 \(A\)가 존재한다"뿐입니다. 증명은 거꾸로 갑니다 — 연속한 두 세제곱수 사이엔 늘 소수가 있다(잉엄의 소수 간격 정리)는 사실을 써서, 소수 \(p_1\lt p_2\lt\cdots\)를 \(p_{n+1}\)이 \((p_n^3,\ (p_n+1)^3)\) 안에 들도록 욕심껏 고른 뒤, \(A=\lim_{n\to\infty} p_n^{\,3^{-n}}\)으로 정의합니다. 즉 소수를 먼저 고르고, 그 수열을 하나의 실수로 인코딩한 것이 \(A\)죠. 아…
퀴즈 만화 《나나마루 산바츠》에도 등장하는, 아무 날짜의 요일을 단번에 알려 주는 공식이 있습니다. 바로 1882년 크리스티안 첼러가 만든 첼러의 공식이죠. 처음 보면 기호가 빽빽해 겁부터 나는데 — 음~ 오?
$$ h=\Big(q+\Big\lfloor\tfrac{13(m+1)}{5}\Big\rfloor+K+\Big\lfloor\tfrac{K}{4}\Big\rfloor +\Big\lfloor\tfrac{J}{4}\Big\rfloor+5J\Big)\bmod 7 $$여기서 \(q\)는 일, \(m\)은 월(단, 1·2월은 전년도의 13·14월로 셈), \(K\)는 연도의 끝 두 자리, \(J\)는 앞 두 자리입니다. 결과 \(h\)는 0이면 토, 1이면 일, 2면 월, …, 6이면 금요일을 뜻합니다.
겁나 보이지만 하는 일은 하나 — "기준일로부터 며칠 지났나"를 \(7\)로 나눈 나머지를 구하는 것뿐입니다. \(\lfloor13(m+1)/5\rfloor\)는 달마다 들쭉날쭉한 날수를 메우는 보정, \(K+\lfloor K/4\rfloor\)는 흘러간 해와 그동안의 윤년(4년마다 하루), \(\lfloor J/4\rfloor\)와 \(5J\)는 100·400년 단위의 그레고리력 윤년 규칙을 처리합니다. 요일이 7일마다 반복한다는 사실에, 달력의 잔손질을 모두 더한 것뿐이죠. 아…
첼러의 공식은 정확하지만 암산하긴 벅찹니다. 그래서 천재 수학자 존 콘웨이가 사람 머리에 맞게 다시 포장한 것이 둠스데이 규칙(Doomsday rule)입니다. 핵심 발상 — 한 해 안의 외우기 쉬운 날짜들이 모두 같은 요일(그 해의 "둠스데이")을 공유합니다:
방법은 세 단계입니다. ① 세기 기준일을 떠올린다(1900년대=수, 2000년대=화, 2100년대=일…). ② 그 해의 둠스데이를 구한다: 끝 두 자리 \(y\)에 대해 (세기 기준일 \(+\,y+\lfloor y/4\rfloor\))를 \(7\)로 나눈 나머지. ③ 목표 날짜에서 가장 가까운 "둠스데이 날짜"까지 며칠 차이인지 세어 더한다. 오? 아… — 결국 또 \(\bmod 7\) 산수입니다. 첼러와 똑같은 계산을, 외우기 좋게 쪼갰을 뿐이죠.
스스로를 그리는 부등식은 비트맵 인코딩, 142857은 그냥 \(1/7\), 밀스 상수는 소수를 거꾸로 인코딩한 실수, 요일 공식과 둠스데이는 달력의 모듈러 산수였습니다. 모두 "음~ 오?"로 시작해 "아… 예…"로 끝나죠. 하지만 김이 빠진 자리에 남는 건 실망이 아니라 "이렇게 포장했구나" 하는 감탄입니다. 마술의 비밀을 알아도, 잘 짜인 트릭은 여전히 근사하니까요.