도구스학업·수학

모듈러 거듭제곱 계산기 (분할 제곱)

a^b mod n을 지수의 2진 표기를 따라가며 제곱과 곱하기로 구하는 과정을 단계별로 보여 줍니다. 곱셈 횟수가 지수가 아니라 비트 수에 비례한다는 것을 순진한 방법과 나란히 견줍니다.

예제

손으로 따라갈 수 있는 크기

3^13 mod 7

3

곱셈 6번으로 끝났습니다 (순진하게 하면 12번)

계산량

지수의 2진 표기11014비트
제곱3
a를 더 곱하기3
분할 제곱 / 순진한 방법6 / 122배 적음

비트를 하나씩 읽으며

비트제곱 뒤a 곱한 뒤여기까지 지수
1첫 비트131
1263
016
11313

«여기까지 지수»가 1에서 시작해 2배씩 커지며 비트가 1일 때 1씩 더해져, 마지막에 원래 지수가 됩니다. 2진수에서 왼쪽으로 미는 것이 곧 2배이기 때문입니다.

곱셈 횟수가 지수가 아니라 지수의 비트 수에 비례합니다. RSA가 흔히 쓰는 공개지수 65537은 순진하게 하면 65536번을 곱해야 하지만, 2진수로 17비트라 18번이면 끝납니다. 이 방법이 없으면 공개키 암호는 실용적이지 않았을 것입니다.
곱할 때마다 법으로 나눠 나머지를 취합니다. 마지막에 한 번만 나누면 중간값의 자릿수가 감당할 수 없이 커지기 때문입니다. (x mod n)(y mod n) mod n = xy mod n이라 답은 달라지지 않습니다. 그래도 두 수를 곱하는 순간 n²까지 커지므로 계산을 전부 BigInt로 합니다.

계산 방법

  1. 1밑 a, 지수 b, 법 n을 넣습니다. 예제 칩을 눌러 널리 쓰이는 값으로 채울 수도 있습니다.
  2. 2지수의 2진 표기를 확인하고, 비트를 하나씩 읽으며 지수가 어떻게 자라는지 봅니다.
  3. 3분할 제곱의 곱셈 횟수를 순진하게 b−1번 곱하는 경우와 견줍니다.

자주 묻는 질문

지수를 2진수로 쓰고 왼쪽부터 한 비트씩 읽습니다. 비트를 읽을 때마다 결과를 제곱하고, 그 비트가 1이면 밑을 한 번 더 곱합니다. 2진수에서 왼쪽으로 한 칸 미는 것이 지수를 2배 하는 것과 같고 끝에 1을 붙이는 것이 2배 하고 1을 더하는 것과 같아서, 그대로 제곱과 곱하기가 됩니다.

곱셈 횟수가 지수 b가 아니라 log₂b에 비례합니다. RSA가 흔히 쓰는 공개지수 65537은 순진하게 하면 65536번을 곱해야 하지만 2진수로 17비트라 18번이면 끝납니다. 지수가 커질수록 차이가 벌어져, 2¹⁰⁰⁰ 규모에서는 비교 자체가 무의미해집니다.

마지막에 한 번만 나누면 중간값의 자릿수가 감당할 수 없이 커지기 때문입니다. a¹⁰⁰⁰만 해도 자릿수가 수천 개입니다. 곱할 때마다 나머지를 취하면 값이 언제나 n²보다 작게 묶이고, (x mod n)(y mod n) mod n = xy mod n이므로 답은 달라지지 않습니다.

법이 소수 p이고 밑이 p의 배수가 아니면 a^(p−1) ≡ 1 (mod p)이기 때문입니다. 페르마 소정리라고 하며, 이 성질 덕분에 지수를 p−1로 나눈 나머지로 줄여 계산할 수 있습니다. 다만 법이 소수일 때만 성립하므로 아무 때나 쓰면 안 됩니다.

이 도구는 다루지 않습니다. 음수 지수는 곱셈에 대한 역원이 있어야 정의되는데, 모듈러 연산에서는 밑과 법이 서로소일 때만 역원이 존재하기 때문입니다. 역원 자체는 edu/modular-inverse에서 구할 수 있습니다.

전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 브라우저의 localStorage에만 남습니다.

알아두면 좋은 점

  • 계산을 BigInt로 합니다. 두 수를 곱하는 순간 값이 n²까지 커지는데, 법이 10⁹만 되어도 10¹⁸로 2⁵³을 넘어 부동소수점에서는 조용히 어긋납니다.
  • 왼쪽에서 오른쪽으로 읽는 방식을 씁니다. 첫 비트에서의 제곱은 1² = 1이라 실제 연산이 아니므로 횟수에 넣지 않습니다.
  • 단계 기록은 200개까지 그립니다. 지수가 그보다 긴 비트열이면 앞부분만 표시하고 집계는 전체를 셉니다.
  • b−1번 곱하는 순진한 방법과 무작위 값 2000개에서 결과가 같은지 대조하고, 페르마 소정리와 지수 법칙(a^(x+y) ≡ a^x·a^y)까지 확인해 맞췄습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.