MCP로 연결 →

계산 입력

공식

광고

결과

결과 (a mod b)
1
버림("%") 방식
몫 (버림) 2
바닥 모듈로 (제수의 부호) 1
5 div 2 = 2 R 1; check 2 x 2 + 1 = 5. So 5 mod 2 = 1.

모듈로 연산이란?

a mod b로 표기하는 모듈로 연산은 피제수 a를 제수(나누는 수) b로 나눴을 때 남는 나머지를 구하는 연산입니다. 컴퓨터 과학과 수학 어디에서나 쓰이며, 시계 계산(12시간·24시간), 해시 함수, 리스트 순환, 약수·배수 판정, 암호학까지 모두 이 연산에 기대고 있습니다. 이 계산기는 양수는 물론 음수와 소수의 나머지까지 구하고, 단계별 풀이 과정 전체를 보여줍니다.

17을 5씩 세 번 점프로 나누고 나머지가 2임을 보여주는 수직선
17 mod 5 = 2: 제수를 정수 단계로 빼면 남는 것이 나머지입니다.

사용 방법

피제수(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가 b 곱하기 몫 더하기 나머지와 같음을 나타내는 도식과 분할된 고리
항등식 \(\text{a} = \text{b} \cdot q + r\) 이 모듈로 결과 \(r\)의 바탕입니다.

예제 풀이

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이면 계산기가 오류를 반환합니다.

최종 업데이트: