Skip to main content
🔬 Advanced ✨ New

Modulo Calculator

Calculate the remainder of a division operation. Find a mod b instantly with step-by-step explanation. This free math tool gives instant, accurate results.

Modulo 연산이란 무엇인가?

Modulo 연산 (mod, 또는 %)은 한 숫자를 다른 숫자로 나눈 후 남은 나머지를 반환합니다. a mod b: a를 b로 나누고, 결과는 나머지입니다. 예를 들어, 17 mod 5 = 2 (17 = 3×5 + 2). 결과는 양의 값일 때 항상 [0, b-1] 범위에 있습니다.

기본 관계: a = q×b + r, 여기서 q는 몫 (floor(a/b)) 이고 r은 나머지 (0 ≤ r < b)입니다. Modulo는 정수 나눗셈의 동반 연산입니다 — a ÷ b = q와 나머지 r이면, a mod b = r. 이 계산기는 실제 수학적 모듈로 정의 (양의 약수일 때 항상 비정상적) 대신 일부 프로그래밍 언어에서 사용하는 부호가 있는 나머지를 사용하지 않습니다.

모듈러 대수 — 고정 모듈러에서 숫자가 "돌아가기" — 시계 대수에 기반을 둡니다. 시계의 시간은 12 또는 24로 계산됩니다. 10시 5시를 더하면 (10 + 5) mod 12 = 3 (PM). 이 돌려받는 동작은 컴퓨터 과학, 암호학 및 수학의 수많은 알고리즘에 중심적입니다.

Modulo 예제 및 단계별 해결책

모듈러 연산을 이해하는 것은 작업 예제로 익숙해지기 때문에 중요합니다. 각 계산 아래의 공식은 다음과 같습니다: 나머지 = a - floor(a ÷ b) × b.

표현 몫 (floor)나머지 (a mod b)검증
17 mod 5323×5 + 2 = 17 ✓
20 mod 4505×4 + 0 = 20 ✓
7 mod 3212×3 + 1 = 7 ✓
100 mod 714214×7 + 2 = 100 ✓
13 mod 13101×13 + 0 = 13 ✓
1 mod 5010×5 + 1 = 1 ✓
256 mod 1616016×16 + 0 = 256 ✓
365 mod 752152×7 + 1 = 365 ✓

365 mod 7 = 1: 이것은 1년이 52주에 1일이 더 있는 것을 의미합니다. 이로 인해 매년 1일씩 요일이 이동합니다. 윤년 (366일)은 2로 나머지로, 요일이 2일씩 이동합니다.

모듈러 대수 응용

모듈러 연산은 프로그래밍과 수학에 걸쳐 있습니다. 짝/홀 검사: n % 2 == 0이면 n은 짝수입니다. 원형 배열 및 링 버퍼: 인덱스 = (현재 인덱스 + 1) % 배열 크기와 원형으로 돌아갑니다. 해시 테이블: 버킷 = 해시 (키) % 버킷 수를 사용하여 해시 값을 유효한 버킷 인덱스로 매핑하여 벗어나지 않는 액세스를 방지합니다.

달력 계산에서 일주일의 요일 대수는 7 mod를 사용합니다. Zeller 공식과 Doomsday 알고리즘 모두 7일이 한 주에 정확히 있는 고정 모듈러를 사용하여 날짜의 요일을 결정합니다. 이러한 작업은 요일이 한 주에 정확히 7일이 있기 때문에 이러한 요일을 계산하는 데 사용됩니다. 시간대 오프셋은 24 mod를 사용하여 시간 값을 올해 중간 경계를 건너 뛸 때 올바르게 감싸줍니다.

디지털 시스템에서 모듈러 연산은 메모리 주소가 관련된 모든 곳에서 사용됩니다. 페이지 테이블 항목, 캐시 세트 선택 및 메모리 맵핑 I/O 모두 모듈러 인덱싱을 사용합니다. CPU 명령 집합은 일반적으로 나눗셈과 함께 나머지 (모듈러와 유사한) 명령을 포함하고 SIMD 벡터 명령은 셔플에서 래인.wrap을 사용합니다.

오류 검출에서 사이클릭 레드런드런시 체크 (CRC) 및 체크섬은 GF(2)에서 다항식 모듈러 대수를 사용하여 계산됩니다. 신용 카드 번호는 Luhn 알고리즘 (모듈러-10 검사)을 통과하고 ISBN-10 책 번호는 11 mod를 사용합니다. 이러한 체크섬은 숫자 코드의 전치 및 단일 자릿수 오류를 검출합니다.

모듈러 암호학

모듈러 산술은 현대 공개 키 암호학의 수학적 기초입니다. RSA, Diffie-Hellman 및 엘리프틱 곡선 암호화라는 세 가지 가장 중요한 암호화 알고리즘 모두 모듈러 연산을 수행하는 데 의존합니다.

RSA 암호화는 모듈러 지수화: 공개 키 (e, n)로 암호화된 메시지 M를 암호화하여 C = M^e mod n. 복호화하려면 C^d mod n을 계산하십시오. d는 개인 키입니다. 보안은 n (대체로 2048 비트 이상의 큰 소수)의 분해의 어려움에 의존합니다. - n을만나면 p와 q를 복원하는 것은 컴퓨터로 계산할 수 없습니다.

Diffie-Hellman 키 교환은 불안전한 채널에서 공유 비밀을 설정하는 데 사용할 수 있습니다: 앨리스는 A = g^a mod p를 보냅니다. 밥은 B = g^b mod p를 보냅니다. 각 당사자는 공유 비밀을 계산합니다: 앨리스는 B^a mod p = g^(ab) mod p를 계산합니다. 밥은 A^b mod p = g^(ab) mod p를 계산합니다. eavesdropper는 g^a mod p와 g^b mod p를截获하면 g^(ab) mod p를 복원할 수 없습니다. discrete 로그 문제를 해결해야합니다.

이 시스템의 보안은 모듈러 지수화의 단방향성에 의존합니다: g^a mod p를 계산하는 것은 빠르지만 (반복된 제곱으로 O(log a) 곱셈), g^a mod p를 역산하는 것은 큰 소수 p의 경우 지수 시간이 걸립니다.

음수와 Edge Case에 대한 모듈러

음수에 대한 모듈러 동작은 프로그래밍 언어에 따라 다르며, 이는 많은 버그를 찾기 어려운 버그를 유발합니다. 소프트웨어 개발자에게는 이해하는 것이 중요합니다.

언어-7 % 37 % -3정의
Python2-2부호는 나눗셈자에 따라 (참 모듈)
JavaScript-11부호는 몫에 따라 (나머지)
C / C++-11부호는 몫에 따라 (C99+)
Java-11부호는 몫에 따라
Ruby2-2부호는 나눗셈자에 따라 (참 모듈)
Math (정의)21 (또는 정의되지 않음)양의 나눗셈자에 대해 항상 비음성 결과를 반환합니다.

수학적으로, 모듈러는 항상 비음성 결과를 반환합니다: -7 mod 3 = 2 (since -7 = -3×3 + 2, 0 ≤ 2 < 3). 이 계산기는 수학적 정의를 사용합니다.

어떤 언어에서든 비음성 결과를 보장하는 안전한 방법: ((a % b) + b) % b. 이 패턴은 내부적으로 우리의 계산기를 사용하여 음수 입력을 처리하고 배열 인덱싱 또는 달력 일자 계산과 같은 음수 결과가 오류를 일으킬 때 사용됩니다.

Edge Case를 기억하세요: (1) 어떤 숫자 mod 1 = 0 — 1으로 나누면 나머지가 없습니다. (2) 어떤 숫자 mod 그 자체 = 0. (3) 0 mod 비 0 숫자 = 0. (4) 0으로 나누기 (및 모듈러)가 정의되지 않습니다 — 항상 나눗셈자에 대해 유효성을 검사하십시오. 우리의 계산기는 모듈러 0에 대한 명확한 오류 메시지를 표시합니다.

Modulo와 약수성 검사

모듈로의 가장 실용적인 사용은 완전한 나눗셈을 수행하지 않고 약수성을 검사하는 것입니다. 숫자 a는 b에 의해 나누어 떨어진다. 만약 a mod b = 0이면. 이 기능은 빠른 약수성 검사를 가능하게합니다.

약수테스트
2n mod 2 = 0 (마지막 자릿수 짝수)128 mod 2 = 0 ✓
3자릿수 합 mod 3 = 0123: 1+2+3=6, 6 mod 3 = 0 ✓
4마지막 두 자릿수 mod 4 = 0312: 12 mod 4 = 0 ✓
5마지막 자릿수가 0 또는 5735 mod 5 = 0 ✓
9자릿수 합 mod 9 = 0369: 3+6+9=18, 18 mod 9 = 0 ✓
10n mod 10 = 0 (마지막 자릿수 0)500 mod 10 = 0 ✓

이 약수성 규칙은 모듈러 산술 속성에서 유래한 단축 규칙입니다. 3과 9의 자릿수 합 규칙은 10 ≡ 1 (mod 3) 및 10 ≡ 1 (mod 9)라는 이유로 작동합니다. 따라서 3 또는 9로 나누어 떨어지는지 여부는 각 자릿수의 위치 값이 중요하지 않습니다. 이러한 규칙은 모듈러 산술 맥락 없이 초등 학교에서 가르칩니다. 그러나 underlying 메커니즘은 모듈로입니다.

모듈러 지수: 빠른 거듭제곱

직접 a^b mod n을 계산하는 대신 a^b를 계산한 후 n으로 나눗셈을 수행하는 것은 큰 지수가 있는 경우 impractical합니다. - a^100은 수천 자릿수를 가질 수 있습니다. 모듈러 지수는 (a×b) mod n = ((a mod n) × (b mod n)) mod n라는 식을 사용하여 중간 결과를 작게 유지합니다.

빠른 알고리즘은 반복적인 제곱 (이진 지수)을 사용합니다.

이것은 지수 b에서 곱셈의 수를 b에서 O(log₂ b)로 줄입니다. b = 2048 비트 RSA 지수 (~10^600)인 경우, 이것은 수십억의 곱셈과 ~2000 사이의 차이입니다. 이 최적화가 없으면 RSA 암호화가 완전히 불가능합니다.

주로 묻는 질문

15를 4로 나눈 나머지는?

15 mod 4 = 3. 15 = 3×4 + 3이므로 나머지는 3입니다. 확인: 3×4 = 12, 15 - 12 = 3. ✓

0으로 나누는 것은 무엇을 의미합니까?

0으로 나누는 것은 0으로 나누는 것과 같습니다. 0으로 나누는 것은 계산할 수 없습니다. 우리의 계산기는 이 경우 오류 메시지를 반환합니다. 모든 나눗셈 기반 연산에는 0이 아닌 나눗셈자가 필요합니다.

모듈러 연산은 어떤 관련성이 있나요?

숫자 a는 b로 나누어 떨어지면 a mod b = 0입니다. 예를 들어, 24 mod 6 = 0이므로 24는 6으로 나누어집니다. 25 mod 6 = 1이므로 25는 6으로 나누어지지 않습니다. 이로 인해 모듈러 연산은 컴퓨터 과학에서 나누어 떨어질지 여부를 테스트하는 기본 도구가 됩니다.

mod와 나머지는 무엇의 차이가 있나요?

양의 정수에 대해 mod와 나머지는 동일합니다. 음의 정수에 대해 다릅니다. 수학적 모듈러 연산은 항상 비정상적인 결과를 반환합니다(나눗셈자는 부호를 따릅니다), 반면 나머지는 나눗셈자의 부호를 따릅니다. 예를 들어, -7 mod 3 = 2 (수학), -7 나머지 3 = -1 (C, Java, JavaScript에서).

10 mod 3은?

10 mod 3 = 1. 10 = 3×3 + 1이므로 나머지는 1입니다. 확인: 3×3 = 9, 10 - 9 = 1. 10은 3으로 나누어지지 않으므로 10은 3으로 나누어 떨어지지 않습니다.

0 mod 5는?

0 mod 5 = 0. 0은 0으로 나누어 떨어지므로 0으로 나누어 떨어집니다. 0은 n ≠ 0의 모든 n에 대해 0 mod n = 0입니다. 이것은 정의와 일치합니다: 0 = 0×5 + 0.

모듈러 연산은 프로그래밍에서 어떻게 사용되나요?

일반적인 프로그래밍 사용 사례는 다음과 같습니다: 짝/홀수 확인 (n%2==0), 배열 인덱스 wrapping (index%length), 링 버퍼 구현, 해시 테이블에 항목 분배 (hash%size), 상태 머신에서 n 번째 상태로 회전 (counter%n==0), n 번째 반복마다 주기적 이벤트가 발생하도록 보장합니다.

시계 연산은 무엇인가?

시계 연산은 일상적인 모듈러 연산입니다. 12시간 시계는 12 mod를 사용합니다: 11시 + 3시간 = (11+3) mod 12 = 2시. 이 wrap-around 동작은 모듈러 연산과 정확히 일치합니다. 유사하게, 일주일은 7 mod를 사용하고 군대 시간은 24 mod를 사용합니다.

모듈러 연산은 암호학에서 왜 중요합니까?

모듈러 연산은 한 방향 함수를 가능하게합니다. g^a mod p (g, a, p)를 계산하는 것은 빠르지만 g^a mod p (고정 g, a, p)와 p를 찾는 것은 큰 소수에 대해 계산적으로 불가능합니다. 이 비대칭성은 Diffie-Hellman 키 교환, RSA 및 인터넷 통신을 보호하는 대부분의 공개 키 암호학에 기반을 두고 있습니다.

어떤 숫자 mod 1은?

어떤 정수 mod 1 = 0. 1로 나누면 항상 나머지가 0이 나옵니다. 1에 대해 완벽하게 나누어 떨어지는 모든 정수입니다. 이것은 수학적으로 일치합니다: a = a×1 + 0, 따라서 항상 0의 나머지가 있습니다. 이 엣지 케이스는 모듈러 연산 구현에서 중요합니다.

일상생활에서 모듈 연산: 실제 예시

모듈 연산은 대부분의 사람들이 생각하는 것보다 일상생활에서 훨씬 자주 나타난다. 시계를 읽을 때, 주간 이벤트가 반복되는 날짜를 계산할 때, 9로 나누어지는지 확인할 때, 연도를 마지막 자릿수로 확인하여 연중의 어느 날이 기념일이 되는지 확인할 때, 모듈 연산을 사용하고 있지만 그 이름을 사용하지 않는다.

일정과 반복: 이벤트가 7일마다 발생하고 현재는 화요일(일요일=0으로 0부터 시작)인 경우, 30일 후는 (2+30) mod 7 = 32 mod 7 = 4, 즉 목요일이다. 직접 계산하는 것이 주간과 일자별로 따로 계산하는 것보다 빠르다. 만약 구독이 매월 28일마다 갱신되고 현재는 15일인 경우, 갱신까지의 일수는 (28-15) mod 31 = 13일이다.

디지털 체크 디지트: ISBN-13 바코드 표준은 10으로 나눈 나머지를 사용한다. ISBN-13의 마지막 자릿수는 모든 13자리의 가중 합이 10으로 나누어 떨어지도록 선택된다. 책의 ISBN을 입력할 때 단일 자릿수를 잘못 입력하면 체크가 실패(10 mod ≠ 0)하고 오류가 표시된다. 신용 카드 번호는 Luhn 알고리즘 — 모듈-10 체크 —를 사용하여 같은 목적으로 사용된다. ISBN-10 표준은 11로 나눈 나머지를 사용하여 단일 전치 검출이 가능하다.

컴퓨터 메모리 및 주소: RAM은 일반적으로 2의 거듭제�수로 주소된다(1024, 2048, 4096 바이트/페이지). 프로그램이 메모리를 액세스할 때 OS는 모듈 연산을 사용하여 메모리 페이지에 해당하는 주소를 계산한다: page_number = address mod page_size. CPU 캐시의 캐시 라인 선택도 모듈 연산을 사용한다. 오디오 처리, 네트워크 패킷 큐잉, 비디오 스트리밍 모두 원형 버퍼 수학을 사용하여 버퍼.wrap-around를 사용한다: write_position = (write_position + 1) % buffer_size.

예술 및 음악 패턴: 음악 이론에서 리듬 패턴은 모듈 연산을 사용하여 분석된다. 4/4 타임 시그니처는 0, 1, 2, 3 반복 — 모듈-4 사이클이다. 다중 리듬은 두 개의 독립적인 리듬이 m와 n의 기간을 동시에 재생할 때 발생한다; 그들은 lcm(m,n) 비트마다 동기화된다. 2차원에서 모듈 연산을 사용하여 반복되는 패턴이 있는 타일 테셀레이션도 있다.

지리적 및 시간대 계산: UTC 오프셋은 -12에서 +14까지이다. 시간대 변환: UTC 시간 T에서, 지역 시간 = (T + offset) mod 24. 결과 값은 23 + 5 = 28, mod 24 = 4, 즉 다음날 4시가 되는 것처럼 보이지만 모듈 연산은 정오 경계를 올바르게 처리한다. 국제 날짜선 횡단은 24 mod와 함께 일주일의 날짜 계산을 사용하여 mod 7를 사용한다.

모듈 연산을 이해하면 이러한 일상적인 계산이 더 명확해지고 빠르고 오류가 적어진다. 패턴을 보자마자, 컴파일러 최적화, 비디오 게임의 회전 알고리즘, 라운드 로빈 토너먼트 스케줄링, 서버 클러스터에 대한 로드 밸런싱 — 모두 모듈 연산의 단순하고 강력한 개념인 나머지 연산을 사용한다.