← 목록으로
신기함의 해부

음~ 오? 아… 예…

Looks like magic. Turns out it's just bookkeeping.

처음엔 "음~" 하고 흥미가 돌고, "오?" 하고 놀라다가, "아…" 하고 원리를 깨닫는 순간 "예…" 하고 김이 살짝 빠지는 — 그런 수학들을 모았습니다. 신기해 보이지만, 알고 보면 그렇게까지 신기하진 않은 것들.

0"음~ 오? 아… 예…"의 곡선

좋은 마술은 트릭을 알아도 여전히 아름답습니다. 수학에도 그런 게 있죠 — 처음 보면 마법 같은데, 뜯어보면 기발한 포장이었을 뿐 새로운 마법은 없는. 그렇다고 시시하다는 건 아닙니다. 오히려 "어떻게 포장했나"가 진짜 재미죠. 스스로를 그리는 부등식, 요일을 맞히는 공식, 그리고 머릿속 요일 점쟁이 — 셋을 차례로 해부합니다.


1스스로를 그리는 부등식

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\)축 어딘가에 반드시 있습니다.

"아…" 하는 순간
부등식이 자기를 "안다"거나 자기를 "그린다"는 건 착시입니다. 누군가 그 부등식의 그림을 비트로 인코딩한 수 \(k\)를 계산해, 거기로 찾아간 것뿐이죠. 그림이 곧 수이고, 수가 곧 그림입니다. 사실 이 식은 상상할 수 있는 모든 \(106\times17\) 그림(당신의 얼굴, 이 문장, 무엇이든)을 \(y\)축 어딘가에서 그립니다 — 무한히 긴 플립북처럼. 예…

아래에서 직접 비트맵을 그려 보세요. 칸을 칠할 때마다, "그 그림을 그리는 수" \(N\)(과 터퍼식 \(k=H\cdot N\))이 실시간으로 바뀝니다. 그림 = 수임을 눈으로 확인할 수 있죠.

그림을 그리면 — 그 그림인 수가 나온다

칸을 눌러 \(12\times8\) 비트맵을 그려 보세요
픽셀 \((x,j)\)는 수 \(N\)의 \((8x+j)\)번째 비트. 그래서 그림 하나에 정수 하나가 정확히 대응합니다. 터퍼는 띠 높이를 \(17\), 폭을 \(106\)으로 썼을 뿐, 원리는 이 작은 격자와 똑같습니다.

2곱하면 자리만 도는 수 — 142857

여섯 자리 수 \(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\)이 원시근인 소수죠.)

×1 ~ ×7 — 같은 고리가 돌고, 7에서 무너진다

곱하는 수
위는 기준 \(142857\), 아래는 곱한 결과. 같은 색이 같은 숫자입니다 — \(1\!\sim\!6\)에서는 색 배열이 그대로 회전만 하고, \(7\)에서는 모두 \(9\)로 무너지죠.

3소수를 뱉는 상수? — 밀스 상수

이런 상수가 있습니다 — \(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\)죠. 아…

"예…" — 소수가 상수를 만든다
그러니 \(A\)는 소수를 만드는 게 아니라 소수로부터 결정됩니다. (1) \(A\)의 자릿수를 알려면 이미 그 소수들을 알아야 하고(엄밀히 계산하려면 리만 가설까지 가정합니다), (2) 고르는 방법이 무수히 많으니 이런 상수도 무수히 많습니다. 1장의 터퍼 부등식이 그림을 수에 숨겨 뒀듯, 밀스 상수는 소수 수열을 한 실수에 숨겨 둔 것 — 마법이 아니라 정교한 포장입니다. (밀스 상수가 힌친·콘웨이·파이겐바움 같은 다른 "사연 있는 상수들" 틈에 놓인 모습은 상수 열전 편에서 볼 수 있어요.)

연속한 세제곱수 사이의 소수 — 밀스의 원재료

n
\(n^3\)과 \((n+1)^3\) 사이엔 (작은 \(n\)에서도) 소수가 넘칩니다. 밀스는 이 소수들 중 하나씩을 골라 수열을 만들고 그걸 상수로 인코딩했을 뿐 — 어느 걸 고르든 되니, 밀스식 상수도 무수히 많죠.

4요일을 맞히는 공식 — 첼러의 공식

퀴즈 만화 《나나마루 산바츠》에도 등장하는, 아무 날짜의 요일을 단번에 알려 주는 공식이 있습니다. 바로 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일마다 반복한다는 사실에, 달력의 잔손질을 모두 더한 것뿐이죠. 아…

날짜를 넣으면 — 공식이 요일을 뱉는다

날짜를 바꿔 보세요. 공식에 \(q,m,K,J\)를 대입해 \(\bmod 7\)을 취하면 끝 — 마법이 아니라 달력 규칙의 산수입니다.

5둠스데이 — 머릿속으로 요일 맞히기

첼러의 공식은 정확하지만 암산하긴 벅찹니다. 그래서 천재 수학자 존 콘웨이가 사람 머리에 맞게 다시 포장한 것이 둠스데이 규칙(Doomsday rule)입니다. 핵심 발상 — 한 해 안의 외우기 쉬운 날짜들이 모두 같은 요일(그 해의 "둠스데이")을 공유합니다:

방법은 세 단계입니다. ① 세기 기준일을 떠올린다(1900년대=수, 2000년대=화, 2100년대=일…). ② 그 해의 둠스데이를 구한다: 끝 두 자리 \(y\)에 대해 (세기 기준일 \(+\,y+\lfloor y/4\rfloor\))를 \(7\)로 나눈 나머지. ③ 목표 날짜에서 가장 가까운 "둠스데이 날짜"까지 며칠 차이인지 세어 더한다. 오? 아… — 결국 또 \(\bmod 7\) 산수입니다. 첼러와 똑같은 계산을, 외우기 좋게 쪼갰을 뿐이죠.

연습 — 날짜를 보고 요일을 맞혀 보세요

먼저 머릿속으로 둠스데이 3단계를 굴려 요일을 떠올리고, "정답 보기"로 풀이와 함께 확인하세요. "예…" 소리가 나올 즈음이면 이미 요일 점쟁이가 된 겁니다.

6맺으며

스스로를 그리는 부등식은 비트맵 인코딩, 142857은 그냥 \(1/7\), 밀스 상수는 소수를 거꾸로 인코딩한 실수, 요일 공식과 둠스데이는 달력의 모듈러 산수였습니다. 모두 "음~ 오?"로 시작해 "아… 예…"로 끝나죠. 하지만 김이 빠진 자리에 남는 건 실망이 아니라 "이렇게 포장했구나" 하는 감탄입니다. 마술의 비밀을 알아도, 잘 짜인 트릭은 여전히 근사하니까요.


참고 자료