뤼카–레머 메르센 소수 판정기
2^p − 1이 소수인지 뤼카–레머 판정법으로 확정적으로 가립니다. p가 소수여도 2^p − 1은 소수가 아닐 수 있다는 것(M(11) = 23 × 89)을 실제로 보여주고, 메르센 소수 하나가 짝수 완전수 하나와 대응하는 것도 함께 확인합니다.
2^p − 1이 소수인지 봅니다. 12,000까지 다룹니다.
M(11) = 2^11 − 1
소수가 아닙니다
11은 소수인데도 M(11)은 합성수입니다. 지수가 소수인 것은 후보 자격일 뿐입니다.
나머지가 흘러가는 모습
| k | s_k |
|---|---|
| 0 | 4 |
| 1 | 14 |
| 2 | 194 |
| 3 | 788 |
| 4 | 701 |
| 5 | 119 |
| 6 | 1877 |
| 7 | 240 |
| …9 | 1736 |
s₀ = 4에서 시작해 s를 제곱하고 2를 뺀 뒤 M(11)로 나눈 나머지를 취하기를 9번 되풀이했습니다. 마지막 값이 0이 아니라 합성수입니다.
이 도구로 훑어 확인한 지수
2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607, 1279, 2203, 2281, 3217, 4253, 4423
p를 4,600까지 모두 훑어 나온 목록이며, 알려진 처음 스무 개와 정확히 같습니다. 그 위로도 메르센 소수는 계속 발견되고 있고 최근 것들은 자릿수가 수천만에 이릅니다 — 이 도구가 다루는 범위 밖입니다.
계산 방법
- 1지수 p를 넣습니다.
- 22^p − 1이 소수인지 판정 결과를 봅니다.
- 3나머지가 4에서 시작해 어떻게 흘러가는지 표에서 확인합니다.
- 4p = 11처럼 소수인데 M(p)가 합성수인 경우를 봅니다.
- 5메르센 소수라면 대응하는 짝수 완전수도 확인합니다.
자주 묻는 질문
2^p − 1이 소수인지 가리는 방법입니다. s₀ = 4에서 시작해 s를 제곱하고 2를 뺀 뒤 2^p − 1로 나눈 나머지를 취하기를 p−2번 되풀이했을 때, 마지막 값이 0이면 소수이고 아니면 합성수입니다. 확률적 판정이 아니라 확정적 판정이라는 점이 중요합니다.
2^p − 1이라는 모양 덕분입니다. 이 수로 나눈 나머지를 구하는 것이 아주 싸서(2^p ≡ 1이므로 비트를 p칸 밀어 더하면 끝) 큰 수를 수천 번 제곱해도 감당이 됩니다. 그래서 지금까지 알려진 「가장 큰 소수」는 거의 언제나 메르센 소수였습니다.
아닙니다. 이것이 이 주제의 최다 오해입니다. M(11) = 2047 = 23 × 89가 대표적인 반례입니다. 반대 방향은 성립합니다 — p가 합성수면 2^p − 1은 반드시 합성수입니다. 2^ab − 1은 2^a − 1로 나누어떨어지기 때문입니다.
인터넷 메르센 소수 찾기(Great Internet Mersenne Prime Search)의 줄임말로, 1996년부터 자원자들의 컴퓨터를 모아 메르센 소수를 찾는 분산 계산 프로젝트입니다. 뤼카–레머 판정법이 그 계산의 핵심이고, 최근에 발견된 가장 큰 소수들은 모두 여기서 나왔습니다.
메르센 소수 하나가 짝수 완전수 하나와 1대1로 대응합니다. 유클리드–오일러 정리에 따라 모든 짝수 완전수는 2^(p−1)·(2^p − 1) 꼴이고 여기서 2^p − 1이 소수여야 합니다. p = 2, 3, 5, 7이면 각각 6, 28, 496, 8128입니다.
아직 하나도 발견되지 않았고 있는지 없는지도 증명되지 않았습니다. 수학에서 가장 오래된 미해결 문제 가운데 하나입니다. 짝수 쪽은 메르센 소수와의 대응으로 완전히 설명되지만 홀수 쪽은 아무것도 모릅니다.
전송되지 않습니다. 판정은 모두 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 정답지는 알려진 메르센 소수의 지수 목록입니다. 이 구현으로 p ≤ 4,600을 모두 훑어 나온 지수가 2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607, 1279, 2203, 2281, 3217, 4253, 4423로 알려진 처음 스무 개와 정확히 같습니다. 검사에서는 2,500까지를 매번 다시 훑습니다.
- 목록에 없는 소수 지수는 400까지 모두 「소수 아님」으로 나오는 것도 검사합니다. 통과시키는 쪽만 맞추면 「언제나 참」을 내는 구현도 통과하기 때문입니다.
- p ≤ 40에서는 2^p − 1을 실제로 나눠 인수분해한 결과와 대조합니다. 인수가 하나뿐인 것과 판정이 통과하는 것이 정확히 일치해야 하고, 찾은 인수를 곱하면 2^p − 1이 나와야 합니다.
- M(7) = 127의 나머지 흐름 4 → 14 → 67 → 42 → 111 → 0을 검산값으로 고정했습니다.
- p = 11, 23, 29, 37, 41, 43, 47처럼 소수인데 M(p)가 합성수인 경우를 여럿 검사합니다. p가 합성수일 때 2^a − 1이 실제로 M(p)를 나누는 것도 확인합니다.
- 메르센 소수 하나가 짝수 완전수 하나와 대응하는 것을 6, 28, 496, 8128, 33550336에서 확인했고, 그 값들이 진약수의 합과 같은지도 직접 세어 봅니다.
- p는 12,000까지 다룹니다. p = 4,423이면 4,421번 제곱하는 데 0.1초쯤 걸리고, 12,000이면 1초를 넘습니다. 훑기는 2,500까지만 합니다.
- 자릿수는 문자열 길이로 정확히 셉니다. 비트 수에 log10 2를 곱하는 흔한 어림은 10의 거듭제곱 언저리에서 한 자리씩 어긋납니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.