모듈로 계산기

나머지 (a mod b)
다음

모듈로(또는 “mod”) 연산은 정수 나눗셈 후 나머지를 반환합니다: 17 = 3·5 + 2이므로 17 mod 5 = 2입니다. 시계 산술, 암호학, 해시 함수, SQL의 “N행마다” 패턴의 핵심입니다. 이 계산기는 정수나 소수 피연산자를 받고, 몫과 나머지를 명시적으로 보여주며, 언어 간 부호 규칙 차이(음수에 대해 Python의 % ≠ C의 %)를 처리합니다.

a mod b 계산 방법

  1. 1

    피제수(a)와 제수(b) 입력

    어떤 숫자든. 소수와 음수도 가능합니다.

  2. 2

    부호 규칙 선택

    버림 나눗셈(C, Java, Go), 내림 나눗셈(Python, Ruby, 수학 관례).

  3. 3

    몫과 나머지 확인

    a = q·b + r, r의 부호는 선택한 규칙에 따름.

  4. 4

    수식 보기

    대입값이 각 단계를 보이게 합니다.

음수에 대한 두 가지 규칙

양의 피연산자에서는 모든 규칙이 일치합니다: 17 mod 5 = 2. 음수에서는 언어마다 다릅니다:

언어 -17 mod 5 규칙
Python, Ruby 3 내림
C, Java, Go, JS -2 버림
수학 교과서 3 내림(보통)

내림 나눗셈: 몫이 −∞ 쪽으로 반올림됩니다. 나머지는 항상 제수의 부호를 가집니다: b와 같은 부호. 버림 나눗셈: 몫이 0 쪽으로 반올림됩니다. 나머지는 피제수의 부호를 가집니다: a와 같은 부호.

a = -17, b = 5의 경우:

  • 버림: q = -3(0 쪽으로 반올림), r = -17 − (-3)·5 = -2.
  • 내림: q = -4(-∞ 쪽으로 반올림), r = -17 − (-4)·5 = 3.

규칙을 고려하면 둘 다 옳습니다. 언어에 맞춰 고르세요.

모듈로가 등장하는 곳

  • 시간. 한 시간의 분, 요일, 하루의 초, 모두 mod 산술입니다.
  • 해시 테이블. hash(key) mod table_size가 버킷을 고릅니다.
  • 라운드 로빈 스케줄링. task_i mod worker_count가 작업을 할당합니다.
  • 암호학. RSA와 디피-헬먼은 거대한 소수와 함께 mod n 위에 세워집니다.
  • N행마다. SQL에서: WHERE id % 3 = 0.
  • 짝수/홀수 검사. n mod 2 == 0이면 짝수.
  • 번갈아 나오는 패턴. 행 줄무늬, 한 칸 건너 색칠.
  • 순환 버퍼. (index + 1) mod size가 감싸 돌아옵니다.

유용한 항등식

  • (a + b) mod n = ((a mod n) + (b mod n)) mod n
  • (a · b) mod n = ((a mod n) · (b mod n)) mod n
  • (a^k) mod n은 O(log k)의 빠른 모듈러 거듭제곱으로 계산할 수 있습니다, 큰 수 암호에 핵심입니다.
  • 모든 정수 a에 대해 a mod 1 = 0.
  • a mod a = 0.

소수 모듈로

실수의 경우 자연스러운 정의는 a mod b = a − b · floor(a/b)입니다. 7.5는 정확한 배수이므로 7.5 mod 2.5 = 0. 7.6 mod 2.5 = 0.1.

JavaScript의 % 연산자는 실수에서 작동하고, Python의 fmod는 버림 실수 mod를, Python의 %는 내림 실수 mod를 합니다.

풀이 예제

  • 100 mod 7: 100 = 14·7 + 2, 나머지 2.
  • 25 mod 4: 25 = 6·4 + 1, 나머지 1.
  • -10 mod 3(내림): -10 = -4·3 + 2, 나머지 2. (버림이면 -1.)
  • 17.5 mod 5: 17.5 = 3·5 + 2.5, 나머지 2.5.

자주 묻는 질문

대부분의 경우 동의어입니다. 형식적으로 “모듈로”는 종종 수학(내림) 규칙을, “나머지”는 종종 버림(C 스타일) 변형을 함의합니다. 이름은 언어 문서에 스며듭니다. 중요할 때는 규칙을 명확히 적으세요.

Python은 수학 규칙(내림)을 따라 나머지의 부호가 제수와 일치하게 유지합니다. C는 하드웨어 ALU 규칙(버림)을 따라 나머지의 부호가 피제수와 일치합니다. 어느 쪽도 틀린 게 아니라 다른 선택입니다.

아니요. 0으로 나누기는 정의되지 않습니다. 계산기는 b = 0에 대해 오류를 반환합니다.

보통은 네. 음수 처리는 언어 사양을 확인하세요, Python과 Ruby는 C, Java, Go, JavaScript와 다릅니다.

2048비트 숫자의 RSA 스타일 수학에는 전용 라이브러리(Python의 pow(a, b, n), Java의 BigInteger.modPow)를 쓰세요. 이 계산기는 일상적 값을 다루지 암호급 값은 아닙니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다