12. 열두 번째 수업: 페르마의 마지막 정리 (Fermat’s Last Theorem)
가장 위대한 아마추어 수학자 페르마가 책의 여백에 남겼던 단 한 줄의 메모.
“나는 경이로운 증명법을 발견했으나, 책의 여백이 좁아 적지 않겠다.”
이 황당한 한마디에 피가 거꾸로 솟은 전 세계의 수학 천재들은 자신의 인생 전부를 쏟아부으며 무려 $\mathbf{350년}$ 동안이나 그 비밀을 증명하려 매달려야 했습니다. 정수론 역사상 가장 로맨틱하고도 잔인했던 이 전쟁의 서막과 끝을 우리는 어떻게 컴퓨터 알고리즘으로 마주할 수 있을까요?
학습 목표
- 피타고라스 정리가 $3$차원, $4$차원의 세계로 나아갔을 때 벌어지는 해를 가질 수 없는 방정식, ‘페르마의 마지막 정리’의 본질을 배웁니다.
- 앤드루 와일즈(Andrew Wiles) 교수의 현대 대수 기하학과 컴퓨터의 연산 한계에 대해 논의합니다.
- 파이썬의
for다중 루프(Multi-loop)를 이용해 거대 거듭제곱 방정식을 ‘노가다’로 뚫어보려는 원시적 수학 증명 시도를 코딩해 봅니다.
1. 피타고라스의 저주: $x^n + y^n = z^n$
페르마는 고대 그리스 디오판토스의 책 《산술》에 나오는 피타고라스의 직각삼각형 공식($x^2 + y^2 = z^2$)을 아주 오랫동안 쳐다보다가 이런 생각을 했습니다.
“만약 저 지수 $2$를 다른 숫자로 바꾼다면, 예를 들어 $x^3 + y^3 = z^3$ 처럼 큐브(Cube) 모양으로 바꾼다면 그 공식에 딱 들어맞는 정수 해답($x, y, z$)을 찾을 수 있을까?”
그리고 그는 이렇게 당당히 선언해 버렸습니다. “$n$이 3 이상의 정수일 때, $x^n + y^n = z^n$ 을 만족하는 0이 아닌 정수해 $x, y, z$ 는 우주에 존재하지 않는다.”
과연 이 수식의 해답이 이 넓고 넓은 무한한 자연수 우주에 단 한 개조차 떨어져 있지 않다는 것을 도대체 어떻게 증명할 수 있을까요? 수학자 오일러조차도 한 평생 $n=3$일 때의 증명만을 간신히 밝혀내고 눈을 감았습니다. 무한한 우주를 상대로 ‘절대로 없다’는 것을 완벽하게 밀봉(증명)하는 것은 불가능에 가까운 일이었습니다.
2. Python의 절규: 우주적 연산 노가다
인간 수학자가 해답이 진짜 없는지 검사하는 방법 중 하나는, 그냥 숫자를 미친 듯이 하나씩 대입해 보는 것입니다. 페르마 시대에는 어림도 없었지만, 우리에겐 파이썬(Python)의 끝없는 분신술, 삼중 폭격 루프(Nested Loop)가 있습니다.
과연 우리 노트북은 1초에 수천만 번씩 대입하며 우주에 숨겨진 $x^3 + y^3 = z^3$ 의 비밀 암호를 찾아낼 수 있을까요?
# 파이썬으로 가동하는 [페르마의 마지막 정리] 우주 무차별 대입기 (Brute-Force)
n = 3 # 지수 3 환경 (세제곱의 저주)
limit = 100 # x, y, z 를 어디까지 뒤질 것인가? 100까지만 뒤집시다.
print(f"🚀 n = {n} 일 때 해를 찾는 우주선 가동 (Limit: {limit})...")
found_solution = False
# 가장 최악의 무식한 시도:
# x, y, z 3개의 톱니바퀴를 1부터 100까지 각각 뺑뺑이 돌립니다!
for x in range(1, limit + 1):
for y in range(1, limit + 1):
for z in range(1, limit + 1):
# 파이썬의 연산 모터 (거듭제곱 비교)
if (x ** n) + (y ** n) == (z ** n):
print(f"🎉 기적 발생! 페르마가 틀렸습니다! 정수 해를 찾았습니다! x={x}, y={y}, z={z}")
found_solution = True
break
if found_solution: break
if found_solution: break
if not found_solution:
print("=" * 50)
print(f"💀 X부터 Z까지 각 {limit}번 씩, 총 {limit*limit*limit} 번의 우주 공간을 박살 냈지만...")
print(f"결국 n = {n} 일 때 정수 해를 한 개도 찾지 못했습니다. 페르마의 승리입니다.")
여러분의 CPU 쿨러가 돌면서 $100 \times 100 \times 100 = \text{백만 번}$의 무자비한 숫자의 우주를 폭격하지만 결과는 처참한 패배입니다. 아무리 범위를 10배, 100배 올려 컴퓨터를 수천 년 돌려도 해답을 찾을 수 없습니다. 왜냐하면 무한(Infinity)이라는 공간은 백만, 수십 억의 유한한 컴퓨터 루프 자원을 완전히 비웃어 버리기 때문입니다.
결국 1994년 영국 수학자 앤드루 와일즈(Andrew Wiles)는, 컴퓨터 노가다 증명이 아닌 절대 타원 곡선과 모듈러 형태학이라는 최신 데이터 우주 기하학을 끌어와서 페르마의 이 지독한 350년짜리 낙서를 완전히 논리적으로 증명하고 종결해 냈습니다!
학습 정리
- 페르마의 마지막 정리: $n \ge 3$ 이상일 때 $x^n + y^n = z^n$ 을 만족하는 $0$이 아닌 정수해는 없다는 고대부터 현대까지를 관통하는 정수론 최고의 난제. 현대 수학이 총동원되어 증명해버렸다!
- 아무리 뛰어난 슈퍼컴퓨터의
for (루프)알고리즘 연산력으로도, $x, y, z$ 값이 제한되는 무한대 영토(Infinity)를 하나씩 검증하며 귀납적으로 증명하는 것은 불가능하다. - 따라서 현대 컴퓨터 과학에서 알고리즘 증명(Algorithm Proof)이란 단순히 경우의 수를 나열하는 벤치마킹이 아니라, 코드 자체의 공간 복잡도(Big-O) 수식을 대수학적으로 완벽히 설계하여 검증(Test)해야 함을 보여준다.