펠 방정식 최소해 계산기
x² − D·y² = 1의 최소 양의 정수해를 √D의 연분수 전개로 찾습니다. D=60의 답이 (31, 4)인데 D=61에서 (1766319049, 226153980)으로 뛰는 것처럼, 작은 계수에 거대한 답이 나오는 모습을 근사분수 표로 따라갈 수 있습니다.
x² − 61·y² = 1
2부터 2,000까지. 완전제곱수면 해가 없습니다.
최소해 x
1766319049
x = 1766319049, y = 226153980입니다. √61의 연분수를 22번째 근사분수까지 폈을 때 나옵니다.
최소해
x
1766319049
y
226153980
√61의 연분수
[7; 1, 4, 3, 1, 2, 2, 1, 3, 4, 1, 14] 되풀이
−1 쪽의 최소해
x = 29718
y = 3805
검산: -1
√D의 연분수는 반드시 주기적이고, 주기의 마지막 항은 언제나 2·a₀입니다. 마지막 항을 뺀 나머지는 앞뒤가 같은 회문입니다. 주기가 홀수일 때만 x² − D·y² = −1이 풀리며, 그때 주기 직전의 근사분수가 그 해입니다.
근사분수를 차례로
| k | a | h / k | h² − D·k² |
|---|---|---|---|
| 0 | 7 | 7 / 1 | -12 |
| 1 | 1 | 8 / 1 | 3 |
| 2 | 4 | 39 / 5 | -4 |
| 3 | 3 | 125 / 16 | 9 |
| 4 | 1 | 164 / 21 | -5 |
| 5 | 2 | 453 / 58 | 5 |
| 6 | 2 | 1070 / 137 | -9 |
| 7 | 1 | 1523 / 195 | 4 |
| 8 | 3 | 5639 / 722 | -3 |
| 9 | 4 | 24079 / 3083 | 12 |
| 10 | 1 | 29718 / 3805 | -1 |
| 11 | 14 | 440131 / 56353 | 12 |
| 12 | 1 | 469849 / 60158 | -3 |
| 13 | 4 | 2319527 / 296985 | 4 |
| 14 | 3 | 7428430 / 951113 | -9 |
| 15 | 1 | 9747957 / 1248098 | 5 |
| 16 | 2 | 26924344 / 3447309 | -5 |
| 17 | 2 | 63596645 / 8142716 | 9 |
| 18 | 1 | 90520989 / 11590025 | -4 |
| 19 | 3 | 335159612 / 42912791 | 3 |
| 20 | 4 | 1431159437 / 183241189 | -12 |
| 21 | 1 | 1766319049 / 226153980 | 1 |
마지막 열이 1이 되는 곳이 최소해입니다. 아무 분수나 훑는 것이 아니라 √D에 가장 잘 붙는 분수만 훑기 때문에 금방 닿습니다.
그다음 해들
xₙ + yₙ√D = (x₁ + y₁√D)ⁿ
2번째 해 · x 19자리
x = 6239765965720528801
y = 798920165762330040
3번째 해 · x 29자리
x = 22042834973108102061352541449
y = 2822295814832482312327709940
4번째 해 · x 38자리
x = 77869358613928486808166555366140995201
y = 9970149719303180503641083029374964080
해는 무한히 많고, 최소해 하나를 알면 나머지가 줄줄이 따라 나옵니다. 풀어 쓰면 xn+1 = x₁xₙ + D·y₁yₙ, yn+1 = x₁yₙ + y₁xₙ입니다.
계산 방법
- 1D를 넣습니다. 2부터 2000까지 다룹니다.
- 2완전제곱수가 아니면 최소해 x와 y가 바로 나옵니다.
- 3「검산 x² − D·y²」가 1인지 확인합니다.
- 4근사분수 표에서 마지막 열이 1이 되는 줄을 찾습니다. 그 줄이 최소해입니다.
- 5D=60과 D=61을 번갈아 눌러 답의 크기가 얼마나 벌어지는지 견줍니다.
자주 묻는 질문
D가 완전제곱수가 아니면 반드시 양의 정수해가 있습니다. 1768년에 라그랑주가 증명했습니다. 반대로 D가 완전제곱수 k²이면 식이 (x − k·y)(x + k·y) = 1이 되어 두 인수가 모두 1이어야 하므로 y = 0인 자명한 해밖에 없습니다.
최소해의 크기가 D에 매끄럽게 따라 커지지 않기 때문입니다. D=60의 최소해는 (31, 4)로 두 자리인데 D=61에서 갑자기 (1766319049, 226153980)이 됩니다. √D의 연분수 주기가 길어지면 최소해가 급격히 커지는데, 그 주기 길이가 D에 따라 들쭉날쭉합니다. 페르마가 동시대 수학자들에게 D=61을 풀어 보라고 낸 것도 이 성질을 알고 있었기 때문입니다.
√D의 연분수 근사분수 hₖ/kₖ를 차례로 만들어 hₖ² − D·kₖ² = 1이 되는 곳을 찾습니다. √D의 연분수는 반드시 주기적이고, 근사분수는 √D에 가장 잘 붙는 분수들이라 아무 분수나 훑는 것보다 훨씬 빨리 닿습니다. 이 계산기의 근사분수 표에서 마지막 열이 1이 되는 줄이 그 자리입니다.
아닙니다. √D 연분수의 주기 길이가 홀수일 때만 풀립니다. D=2는 주기가 1이라 1² − 2·1² = −1이 되고, D=3은 주기가 2라 −1 쪽 해가 없습니다. 주기가 홀수면 주기 직전의 근사분수가 그 해이며, 이 계산기가 함께 보여 줍니다.
무한히 많습니다. 최소해를 (x₁, y₁)이라 하면 모든 해가 xₙ + yₙ√D = (x₁ + y₁√D)ⁿ 꼴로 나옵니다. 풀어 쓰면 x다음 = x₁x + D·y₁y, y다음 = x₁y + y₁x입니다. 그래서 최소해 하나만 구하면 나머지는 곱셈만으로 줄줄이 얻을 수 있습니다.
오일러가 이 문제를 존 펠의 것으로 잘못 돌린 데서 굳어진 이름입니다. 정작 펠은 이 방정식을 다루지 않았고, 유럽에서는 페르마와 브롱커가, 그보다 훨씬 앞서 인도의 브라마굽타와 바스카라 2세가 풀이법을 알고 있었습니다. 이름이 잘못 붙은 채 굳어진 대표적인 예입니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 검증은 2부터 2000까지 완전제곱이 아닌 모든 D에 대해 x² − D·y²를 실제로 계산해 1이 되는지 확인해 했습니다. 계산은 전부 BigInt로 합니다 — D=1021이면 x가 48자리라 배정밀도 부동소수점의 정확한 정수 범위를 훨씬 넘습니다.
- 널리 실려 있는 최소해 표(OEIS A033313·A033317)의 값 가운데 D=13(649, 180), D=61(1766319049, 226153980), D=109(158070671986249, 15140424455100), D=421(34자리)을 테스트로 고정해 두었습니다.
- √D 연분수의 알려진 성질 — 주기의 마지막 항이 2·a₀이고 그 앞부분이 회문이라는 것 — 을 D≤300에서 모두 확인했습니다. 주기 계산이 어긋나면 여기서 깨집니다.
- x² − D·y² = −1이 주기가 홀수일 때만 풀린다는 것도 D≤500에서 모두 대조했습니다.
- 주기 길이는 최소해를 찾는 과정과 따로 잽니다. 함께 재면 주기가 끝나기 전에 해가 나오는 D(D=3 등)에서 주기가 0으로 남습니다.
- D는 2000까지 다룹니다. 근사분수 표는 24줄까지 보이며, 최소해가 그보다 뒤에서 나오면 몇 번째인지 따로 적습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.