모듈로 연산이란?
a mod b로 표기하는 모듈로 연산은 피제수 a를 제수(나누는 수) b로 나눴을 때 남는 나머지를 구하는 연산입니다. 컴퓨터 과학과 수학 어디에서나 쓰이며, 시계 계산(12시간·24시간), 해시 함수, 리스트 순환, 약수·배수 판정, 암호학까지 모두 이 연산에 기대고 있습니다. 이 계산기는 양수는 물론 음수와 소수의 나머지까지 구하고, 단계별 풀이 과정 전체를 보여줍니다.
사용 방법
피제수(a)와 제수(b)를 입력하세요. 두 값 모두 음수나 소수가 될 수 있으며, +/- 버튼으로 부호를 빠르게 바꿀 수 있습니다. 0으로 나누는 것은 정의되지 않으므로 제수는 0이 될 수 없습니다. 결과로는 나머지, 정수 몫, 선택적으로 표시되는 바닥 모듈로(floored) 값, 그리고 풀이 과정이 함께 나타납니다.
공식 설명
이 계산기는 버림 나눗셈(truncated division) 방식을 따릅니다. C, Java, JavaScript의 % 연산자가 사용하는 것과 동일한 규칙입니다. 먼저 몫을 0 방향으로 버림 처리합니다: \(q = \operatorname{trunc}(a / b)\). 그다음 나머지는 \(n = a - q \cdot b\)로 구합니다. 몫을 내림(floor)이 아니라 버림(truncate)으로 처리하기 때문에, 나머지는 피제수 a의 부호를 따릅니다.
$$\text{a} \bmod \text{b} = \text{a} - \left\lfloor \dfrac{\text{a}}{\text{b}} \right\rceil_{0} \cdot \text{b}$$
$$\begin{gathered} r = \text{a} - q \cdot \text{b} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} q &= \operatorname{trunc}\!\left( \dfrac{\text{a}}{\text{b}} \right) \\ \text{b} &\neq 0 \end{aligned} \right. \end{gathered}$$
예를 들어 여기서는 \(-5 \bmod 2 = -1\)이 되지만, 대안인 "내림(floored)" 방식(보조 결과로 함께 표시됨)에서는 제수의 부호를 따라 1이 나옵니다.
예제 풀이
a = 5, b = 2인 경우: 몫은 \(\operatorname{trunc}(5/2) = \operatorname{trunc}(2.5) = 2\)이고, 나머지는 \(5 - 2 \times 2 = 1\)입니다. 풀이: \(5 \div 2 = \) 몫 2, 나머지 1, 그리고 \(2 \times 2 + 1 = 5\). 따라서 \(5 \bmod 2 = 1\)입니다. 소수 예시도 보면, \(7.5 \bmod 2\)는 \(\operatorname{trunc}(3.75) = 3\)이고 \(7.5 - 3 \times 2 = 1.5\)가 됩니다.
자주 묻는 질문
왜 -5 mod 2가 1이 아니라 -1인가요? 이 계산기는 프로그래밍 언어의 버림(truncated) 방식을 따르므로, 나머지가 피제수의 부호와 일치합니다. 제수의 부호가 필요할 때는 바닥 모듈로(floored) 행에서 수학 방식의 답(1)을 확인할 수 있습니다.
약수·배수 판정은 어떻게 하나요? 어떤 수 x가 b의 배수인지는 \(x \bmod b = 0\)인지로 정확히 알 수 있습니다. 예를 들어 \(496 \bmod 4 = 0\)(배수)이지만 \(226 \bmod 4 = 2\)(배수 아님)입니다.
제수가 0이 될 수 있나요? 아니요. 0으로 나누는 것은 정의되지 않으므로, b = 0이면 계산기가 오류를 반환합니다.