이차잉여·르장드르 기호 계산기
a가 법 p에서 제곱수인지 판정하고 르장드르·야코비 기호와 실제 제곱근까지 구합니다. 오일러 판정법과 이차 상호법칙 두 경로를 나란히 계산해 답이 같은지 보여주고, 야코비 기호가 1이어도 제곱수가 아닌 반례도 함께 확인합니다.
a가 법 n에서 제곱수인지 봅니다. n은 홀수여야 하고 10¹⁵까지 다룹니다.
2는 법 7에서
제곱수입니다
법 7은 소수이므로 기호가 +1이면 제곱수, −1이면 아닙니다. 1부터 6까지 가운데 정확히 절반이 제곱수입니다.
법 7의 제곱수 전부
1, [2], 4
1부터 6까지를 모두 제곱해 나온 값들입니다. 대괄호가 지금 넣은 a입니다. 소수 법이라 개수가 정확히 절반입니다 — 1²과 (p−1)², 2²과 (p−2)²처럼 둘씩 짝지어 같은 값이 나오기 때문입니다.
계산 방법
- 1수 a와 법 n을 넣습니다. 법은 홀수여야 합니다.
- 2a가 그 법에서 제곱수인지 판정 결과를 봅니다.
- 3오일러 판정법과 야코비 기호가 같은 값을 내는지 확인합니다.
- 4제곱수라면 실제 제곱근 두 개를 확인합니다.
- 5법을 합성수로 바꿔 기호가 1인데 제곱수가 아닌 경우를 봅니다.
자주 묻는 질문
x² ≡ a (mod n)을 만족하는 x가 있으면 a를 법 n의 이차잉여라고 합니다. 쉽게 말해 그 법 안에서 「제곱수」인 값입니다. 홀수 소수 p에서는 1부터 p−1까지 가운데 정확히 절반이 이차잉여입니다.
1²과 (p−1)², 2²과 (p−2)²처럼 둘씩 짝지어 같은 값이 나오기 때문입니다. p−1개의 수를 제곱하면 서로 다른 값이 (p−1)/2가지만 나옵니다. 그래서 제곱근이 있으면 언제나 두 개이고, 그 둘을 더하면 p가 됩니다.
르장드르 기호는 아래가 홀수 소수일 때만 정의되고, 야코비 기호는 아래가 임의의 양의 홀수일 때로 넓힌 것입니다. 아래가 소수면 두 값이 같습니다. 야코비 기호는 소인수분해 없이 이차 상호법칙만으로 빠르게 계산되지만, 대신 「1이면 제곱수」라는 뜻을 잃습니다.
법이 소수일 때만 그렇습니다. 합성수에서는 −1이 두 번 곱해져 1이 되는 일이 있어서, 기호가 1인데도 제곱수가 아닐 수 있습니다. (2/15) = (2/3)(2/5) = (−1)(−1) = 1이지만 2는 법 15에서 어떤 수의 제곱도 아닙니다. 다만 기호가 −1이면 확실히 제곱수가 아닙니다.
a^((p−1)/2) mod p를 계산해 1이면 이차잉여, p−1이면 아니라고 판정하는 방법입니다. 뜻은 분명하지만 거듭제곱을 해야 합니다. 이차 상호법칙으로 계산하는 야코비 기호는 유클리드 호제법처럼 위아래를 뒤집어 가며 부호만 추적해 훨씬 빠릅니다.
p를 4로 나눈 나머지가 3이면 a^((p+1)/4)가 곧 제곱근이라 한 줄로 끝납니다. 나머지가 1이면 그런 지름길이 없어 톤엘리–섕크스 알고리즘을 씁니다. 이차잉여가 아닌 수를 하나 찾아, 그것의 거듭제곱으로 2의 거듭제곱 부분을 한 겹씩 벗겨 내는 방법입니다.
암호학과 정수론 곳곳에 쓰입니다. 타원곡선 위의 점을 찾을 때, 라빈 암호와 이차 체 소인수분해에서, 그리고 솔로베이–스트라센 소수 판정법에서 야코비 기호가 핵심 도구입니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 정답지가 둘입니다. 첫째, 오일러 판정법과 야코비 기호는 원리가 전혀 다른데 소수 법에서는 반드시 같은 값을 내야 합니다 — 스무 개 소수의 모든 a, 합계 2,042가지에서 일치하는 것을 확인했습니다.
- 둘째, 0부터 p−1까지 무식하게 제곱해 만든 실제 이차잉여 집합과 대조합니다. 르장드르 기호가 1인 것과 실제 제곱수가 정확히 같은지, 홀수 소수에서 그 개수가 정확히 (p−1)/2인지 검사합니다.
- 구한 제곱근을 실제로 제곱해 원래 수가 나오는지, 두 근을 더하면 법이 되는지 1,000건 넘게 검사합니다. p ≡ 3 (mod 4)의 지름길과 톤엘리–섕크스를 각각 큰 소수(1,000,000,007과 1,000,000,009)에서도 확인했습니다.
- 「야코비 기호가 1이어도 제곱수가 아닐 수 있다」는 반례를 여러 합성수에서 실제로 세어 확인합니다. 반대로 기호가 −1이면 확실히 제곱수가 아니라는 것도 함께 검사합니다.
- 야코비 기호가 곱셈적((ab/n) = (a/n)(b/n))인 것도 검사합니다. 0 × (−1)이 자바스크립트에서 −0이 되어 비교가 어긋나는 자리를 따로 다뤘습니다.
- 모든 계산은 BigInt로 합니다. 법을 넘지 않게 줄여 가며 곱해도 중간값이 법의 제곱까지 커지므로, 보통 수로 계산하면 법이 9,400만을 넘는 순간 곱셈이 조용히 틀립니다.
- 소수 판정은 밑 12개를 쓰는 밀러–라빈이라 3.3×10²⁴ 미만에서 결정적입니다. 카마이클 수 561·1105·1729도 합성수로 걸러 내는 것을 확인했습니다.
- 법은 10¹⁵까지, 무식하게 제곱해 보는 표는 300까지 다룹니다. 짝수 법은 이차 상호법칙이 다루지 않으므로 거절합니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.