북마크    
근의 공식    
원 계산기    
타원 넓이    
구의 부피    
캡슐 부피    
ROI 계산기    
IRR 계산기    
GDP 계산기    
CTR 계산기    
LTV 계산기    
CAC 계산기    
BMI 계산기    
1RM 계산기    
진법 변환    
급여 환산    
   추가
확률과 무작위 계산기
독립사건 확률
독립사건 확률
두 사건 확률 역산
두 사건 확률 역산
반복 시행의 확률
반복 시행의 확률
조건부확률·베이즈
조건부확률·베이즈
기댓값 계산기
기댓값 계산기
이항분포 계산기
이항분포 계산기
순열·조합
순열·조합
원순열·염주순열
원순열·염주순열
중복순열·중복조합
중복순열·중복조합
난수 생성기
난수 생성기
평균과 통계 계산기
평균 계산기
평균 계산기
대푯값 계산기
대푯값 계산기
표준편차 계산기
표준편차 계산기
사분위수 계산기
사분위수 계산기
도수분포표 계산기
도수분포표 계산기
상관계수 계산기
상관계수 계산기
정규분포 확률
정규분포 확률
z점수 계산기
z점수 계산기
신뢰구간 계산기
신뢰구간 계산기
표본 크기 계산기
표본 크기 계산기
표지 재포획법
표지 재포획법
p값 계산기
p값 계산기
비율과 백분율 계산기
퍼센트 계산기
퍼센트 계산기
증감률 계산기
증감률 계산기
퍼센트 차이
퍼센트 차이
오차율 계산기
오차율 계산기
비례식 계산기
비례식 계산기
할인율 계산기
할인율 계산기
부가세 계산기
부가세 계산기
마진율 계산기
마진율 계산기
속력 계산기
속력 계산기
속력 계산기
밀도와 농도 계산기
밀도 계산기
밀도 계산기
몰 농도 계산기
몰 농도 계산기
분자량·몰 질량
분자량·몰 질량
물리와 전기 계산기
옴의 법칙 계산
옴의 법칙 계산
와트·암페어 변환
와트·암페어 변환
저항 색 코드
저항 색 코드
전압강하 계산
전압강하 계산
단위 변환 계산기
평 ↔ m² 환산
평 ↔ m² 환산
무게 단위 변환
무게 단위 변환
신발 사이즈 변환
신발 사이즈 변환
정수와 양수·음수 계산기
나눗셈 세로셈
나눗셈 세로셈
최소공배수
최소공배수
최대공약수
최대공약수
양수 음수 계산기
양수 음수 계산기
소인수분해
소인수분해
일차부정방정식
일차부정방정식
나머지 계산기
나머지 계산기
약수 계산기
약수 계산기
로마 숫자 변환
로마 숫자 변환
분수·소수와 어림하기 계산기
분수 계산기
분수 계산기
대분수 계산기
대분수 계산기
약분 계산기
약분 계산기
분수 → 소수 변환
분수 → 소수 변환
소수 → 분수 변환
소수 → 분수 변환
반올림 계산기
반올림 계산기
방정식과 부등식 계산기
일차방정식 계산기
일차방정식 계산기
연립방정식 계산기
연립방정식 계산기
근의 공식
근의 공식
절댓값 방정식
절댓값 방정식
이차부등식 계산기
이차부등식 계산기
다항식과 전개 계산기
이항정리 계산기
이항정리 계산기
제곱근과 거듭제곱근 계산기
근호 계산기
근호 계산기
거듭제곱근 계산
거듭제곱근 계산
지수와 로그 계산기
거듭제곱 계산기
거듭제곱 계산기
로그 계산기
로그 계산기
상용로그와 자릿수
상용로그와 자릿수
과학적 표기법
과학적 표기법
과학적 표기법 계산
과학적 표기법 계산
반감기 계산기
반감기 계산기
복소수 계산기
복소수 계산기
복소수 계산기
복소수 극형식
복소수 극형식
드무아브르 정리
드무아브르 정리
함수와 그래프 계산기
기울기 계산기
기울기 계산기
일차함수 계산기
일차함수 계산기
정비례·반비례
정비례·반비례
이차함수 계산기
이차함수 계산기
두 점 사이의 거리
두 점 사이의 거리
3차원 거리 계산
3차원 거리 계산
내분점·외분점
내분점·외분점
점과 직선의 거리
점과 직선의 거리
위도·경도 거리
위도·경도 거리
완전제곱식 계산기
완전제곱식 계산기
원의 방정식 계산기
원의 방정식 계산기
이차곡선 계산기
이차곡선 계산기
극좌표 변환 계산기
극좌표 변환 계산기
수열 계산기
등차수열 계산기
등차수열 계산기
등비수열 계산기
등비수열 계산기
피보나치 수열
피보나치 수열
점화식 계산기
점화식 계산기
벡터 계산기
벡터 계산기
벡터 계산기
외적 계산기
외적 계산기
행렬 계산기
행렬 계산기
행렬 계산기
행렬식 계산기
행렬식 계산기
역행렬 계산기
역행렬 계산기
평면도형 계산기
삼각비 계산기
삼각비 계산기
도 ⇔ 라디안 변환
도 ⇔ 라디안 변환
삼각함수의 합성
삼각함수의 합성
삼각형 계산기
삼각형 계산기
삼각형 넓이 계산기
삼각형 넓이 계산기
직각삼각형 계산
직각삼각형 계산
피타고라스 정리
피타고라스 정리
다각형의 내각·외각
다각형의 내각·외각
닮음비·넓이·부피
닮음비·넓이·부피
평행선과 각
평행선과 각
직사각형의 넓이
직사각형의 넓이
평행사변형 넓이
평행사변형 넓이
사다리꼴 넓이
사다리꼴 넓이
원 계산기
원 계산기
부채꼴 넓이
부채꼴 넓이
원주각 계산기
원주각 계산기
타원 넓이
타원 넓이
입체도형 계산기
정육면체 부피
정육면체 부피
정육면체 겉넓이
정육면체 겉넓이
직육면체 부피
직육면체 부피
직육면체 겉넓이
직육면체 겉넓이
원기둥 부피
원기둥 부피
원기둥 겉넓이
원기둥 겉넓이
구의 부피
구의 부피
구의 겉넓이
구의 겉넓이
구결의 부피
구결의 부피
구관의 넓이
구관의 넓이
타원체의 부피
타원체의 부피
타원체의 겉넓이
타원체의 겉넓이
사각뿔의 부피
사각뿔의 부피
사각뿔의 겉넓이
사각뿔의 겉넓이
원뿔의 부피
원뿔의 부피
원뿔의 겉넓이
원뿔의 겉넓이
원뿔대의 부피
원뿔대의 부피
원뿔대의 겉넓이
원뿔대의 겉넓이
파이프 부피
파이프 부피
캡슐 부피
캡슐 부피
캡슐 겉넓이
캡슐 겉넓이
날짜와 시간 계산기
만 나이 계산기
만 나이 계산기
일수 계산기
일수 계산기
며칠 후·전 날짜
며칠 후·전 날짜
몇 시간 후·전 계산
몇 시간 후·전 계산
요일 계산기
요일 계산기
시간 더하기 빼기
시간 더하기 빼기
시차 계산기
시차 계산기
근무시간 계산기
근무시간 계산기
시간 차이 계산기
시간 차이 계산기
근무시간 계산기
근무시간 계산기
금융과 경제 계산기
복리 계산기
복리 계산기
단리 계산기
단리 계산기
이자 계산기
이자 계산기
재무용 계산기
재무용 계산기
현재가치 계산기
현재가치 계산기
미래가치 계산기
미래가치 계산기
ROI 계산기
ROI 계산기
IRR 계산기
IRR 계산기
회수기간 계산기
회수기간 계산기
평균 수익률 계산기
평균 수익률 계산기
GDP 계산기
GDP 계산기
웹 마케팅·광고 지표 계산기
CTR 계산기
CTR 계산기
전환율 계산기
전환율 계산기
CPC·CPM·CPA 계산
CPC·CPM·CPA 계산
ROAS 계산기
ROAS 계산기
손익분기 CPA
손익분기 CPA
LTV 계산기
LTV 계산기
CAC 계산기
CAC 계산기
이탈률 계산기
이탈률 계산기
A/B 테스트 유의성
A/B 테스트 유의성
A/B 표본 크기
A/B 표본 크기
SEO 유입 예측
SEO 유입 예측
손익분기점 계산기
손익분기점 계산기
마진율·마크업률
마진율·마크업률
CAGR 계산기
CAGR 계산기
건강과 피트니스 계산기
BMI 계산기
BMI 계산기
수면 주기 계산기
수면 주기 계산기
칼로리 계산기
칼로리 계산기
기초대사량 계산기
기초대사량 계산기
TDEE 계산기
TDEE 계산기
표준체중 계산기
표준체중 계산기
체지방률 계산기
체지방률 계산기
제지방량 계산기
제지방량 계산기
칼로리 소모 계산기
칼로리 소모 계산기
단백질 계산기
단백질 계산기
탄단지 계산기
탄단지 계산기
탄수화물 계산기
탄수화물 계산기
지방 섭취량 계산기
지방 섭취량 계산기
예상키 계산기
예상키 계산기
스포츠 계산기
골프 핸디캡
골프 핸디캡
페이스 계산기
페이스 계산기
1RM 계산기
1RM 계산기
목표심박수 계산기
목표심박수 계산기
날씨 계산기
열지수 계산기
열지수 계산기
겨울 체감온도
겨울 체감온도
이슬점 계산기
이슬점 계산기
컴퓨터 계산기
진법 변환
진법 변환
서브넷 계산기
서브넷 계산기
다운로드 시간 계산
다운로드 시간 계산
가계와 공과금 계산기
가전 전기요금
가전 전기요금
전기요금 계산기
전기요금 계산기
연간 kWh→전기요금
연간 kWh→전기요금
에어컨 평형 계산
에어컨 평형 계산
에어컨 전기요금
에어컨 전기요금
난방 전기요금 비교
난방 전기요금 비교
가스 vs 전기 요금
가스 vs 전기 요금
LED 교체 절약액
LED 교체 절약액
급여 환산
급여 환산
가계 수지 계산
가계 수지 계산
자동차 계산기
주유비 계산기
주유비 계산기
전기차 충전 요금
전기차 충전 요금
전기차 vs 휘발유차
전기차 vs 휘발유차
연비 계산기
연비 계산기
타이어 사이즈 계산
타이어 사이즈 계산
태양광 발전과 에너지 저장 계산기
태양광 발전량
태양광 발전량
태양광 패널 장수
태양광 패널 장수
태양광 회수기간
태양광 회수기간
ESS 용량·사용 시간
ESS 용량·사용 시간
집과 DIY 계산기
타일 수량 계산
타일 수량 계산
계단 치수 계산
계단 치수 계산
콘크리트 물량
콘크리트 물량
벽·천장·바닥 면적
벽·천장·바닥 면적
벽지 계산기
벽지 계산기
페인트 계산기
페인트 계산기
마루 계산기
마루 계산기
외벽 면적 계산
외벽 면적 계산
자갈 계산기
자갈 계산기
몰탈 배합 계산
몰탈 배합 계산
경사도 계산
경사도 계산
목재 재단 계산
목재 재단 계산
건폐율·용적률
건폐율·용적률
장판 필요량
장판 필요량
단열재 필요량
단열재 필요량
커튼 사이즈
커튼 사이즈
TV 크기·시청 거리
TV 크기·시청 거리
흙·배양토 필요량
흙·배양토 필요량
잔디 평수·장수
잔디 평수·장수
블록 담장 수량
블록 담장 수량
벽돌 필요 장수
벽돌 필요 장수
데크 자재 계산
데크 자재 계산
경사로 길이
경사로 길이
피스 가이드 홀
피스 가이드 홀
필요 환기량
필요 환기량
페인트 희석
페인트 희석
걸레받이 계산기
걸레받이 계산기
블라인드 사이즈
블라인드 사이즈
액자 거는 높이
액자 거는 높이
배수 구배·높이차
배수 구배·높이차
피스 수량 계산
피스 수량 계산
목재 재 계산
목재 재 계산
펜스 자재 계산
펜스 자재 계산
목재 수축량 계산
목재 수축량 계산
실리콘 필요량
실리콘 필요량
방 열손실 계산기
방 열손실 계산기
가구 반입 계산기
가구 반입 계산기
이사 박스 개수
이사 박스 개수
수납 용량 계산기
수납 용량 계산기
합판 재단 계산기
합판 재단 계산기
선반 처짐 계산
선반 처짐 계산

나머지 계산기(a mod n·합동식·거듭제곱의 나머지)

모드를 고르고 정수를 입력해 주세요. ‘나머지 구하기’는 음수도 계산할 수 있으며, 수학의 나머지(0 이상)와 프로그래밍의 % 연산자의 차이도 보여 줍니다.

값은 정수를 숫자로 입력해 주세요(소수·분수는 쓸 수 없습니다). a, b, n은 30자리 이내, 지수 k는 0 이상 9자리 이내, 법 n은 1 이상입니다.
계산 결과·도형
왼쪽에서 모드를 고르고 정수를 넣은 뒤 ‘계산’을 누르면 여기에 결과가 표시됩니다(법 n이 2~24일 때는 나머지의 위치를 보여 주는 시계판 그림도 나옵니다).

이 페이지에서 할 수 있는 것

  • 정수 \(a\)를 \(n\)으로 나눈 나머지를 구할 수 있습니다. 음수(예: \(-7\)을 \(3\)으로 나눈 나머지)도 계산할 수 있으며, 수학의 나머지(\(0 \le r < n\))와 C·Java·JavaScript 등의 % 연산자의 결과(음수가 될 때가 있음)를 나란히 보여 줍니다
  • 합동식 \(a \equiv b \pmod{n}\)이 성립하는지를 ‘차 \(a - b\)가 \(n\)의 배수인가’라는 이유와 함께 판정할 수 있습니다
  • \(7^{100}\)을 \(13\)으로 나눈 나머지처럼 큰 거듭제곱의 나머지를 반복 제곱법의 풀이 과정과 함께 정확하게 계산할 수 있습니다(계산기로는 자릿수가 넘치는 수도 그대로 계산할 수 있습니다)
  • 나머지의 모습을 시계판 그림(mod \(n\)의 원)으로 확인할 수 있어 ‘나머지는 같은 자리를 빙글빙글 돈다’는 이미지를 잡을 수 있습니다(시계판 그림은 법 \(n\)이 2~24일 때 표시됩니다)
  • 공식의 쉬운 해설과 Excel·Google 스프레드시트·Python용으로 복사해 쓸 수 있는 수식도 이 페이지에 모아 두었습니다
법 \(n\)은 1 이상의 정수입니다. \(a\), \(b\), \(n\)은 30자리 이내, 지수 \(k\)는 0 이상 9자리 이내로 입력해 주세요.

이 계산은 어디에 쓰일까요?

시계·달력 계산(며칠 뒤는 무슨 요일?)

시계의 ‘14시 = 오후 2시’는 14 mod 12 = 2라는 나머지 계산 그 자체입니다. 요일도 ‘7로 한 바퀴 도는 시계판’과 같은 구조여서, 예를 들어 오늘이 월요일이면 100일 뒤의 요일은 100 mod 7 = 2에서 ‘월요일의 2일 뒤 = 수요일’임을 알 수 있습니다.
수첩의 달력도 달력 앱도 이 나머지 계산으로 날짜와 요일을 맞춥니다.

번호의 실수를 찾아내는 체크 디지트(바코드·ISBN)

상품 바코드(한국 상품은 보통 880으로 시작하는 13자리 GS1 바코드)나 책의 ISBN의 마지막 한 자리는 앞의 자리들로부터 나머지 계산으로 만드는 검사용 숫자(체크 디지트)입니다. 예를 들어 13자리 바코드에서는 각 자리의 숫자에 1배, 3배를 번갈아 곱해 더한 합계를 10으로 나눈 나머지로 마지막 자리를 정합니다.
한 자리를 잘못 입력하면 나머지가 맞지 않게 되므로 계산대나 온라인 쇼핑 시스템은 그 자리에서 입력 실수를 찾아낼 수 있습니다. 신용카드 번호의 검사 숫자도 같은 생각입니다.

인터넷을 지키는 암호(RSA 암호)

신용카드 번호 등을 안전하게 보내는 공개 키 암호의 대표인 RSA 암호는 ‘거대한 수의 거듭제곱을 나눈 나머지’ 그 자체를 계산에 씁니다. 거듭제곱의 나머지는 빠르게 계산할 수 있는데 결과로부터 처음 수를 거꾸로 구하기는 매우 어렵다는 일방통행의 성질이 안전성의 근거입니다.
이 페이지의 ‘거듭제곱의 나머지’ 모드에서 풀이 과정을 보여 주는 반복 제곱법은 암호 소프트웨어가 내부에서 날마다 실행하는 계산입니다.

프로그래밍의 단골(짝수·홀수 판정, 순서를 빙글빙글 돌리기)

프로그래밍에서는 i % 2로 짝수·홀수를 판정하거나, i % n으로 ‘n개로 한 바퀴 도는 순서’를 만들거나(게임의 턴제에서 다음 플레이어 정하기, 슬라이드 쇼가 끝까지 가면 처음으로 되돌리기 등) % 연산자를 날마다 씁니다.
음수가 섞이면 언어에 따라 %의 결과가 다르므로, ‘수학의 나머지와 C·Java 계열의 %의 차이’는 버그를 찾을 때 도움이 되는 지식입니다.

똑같이 나누고 나머지 세기(나누어 주기·상자에 담기)

연필 63자루를 12명에게 같은 수씩 나누어 주면 1명에 5자루씩이고 3자루가 남습니다(63 = 12 × 5 + 3). 재고를 상자에 담기(한 상자에 n개씩이면 몇 상자가 되고 몇 개가 남는지), 행사의 조 나누기 등 ‘똑같이 나누고 나머지를 보는’ 상황은 모두 이 계산입니다.
나눗셈의 기본식 a = n × q + r은 이런 생활 속 상황을 하나의 식으로 나타낸 것입니다.

공식과 그림

나눗셈의 기본식(나머지의 정의)
시계판 그림(mod 12)
수학 표기 (일반적인 수식)
\(a\) \(=\) \(n\) \(\times\) \(q\) \(+\) \(r\)
말로 쓴 표기 (기호를 말로 바꾼 식)
④ 나누어지는 수 \(a\) \(=\) ① 나누는 수(법) \(n\) \(\times\) ② 몫 \(q\) \(+\) ③ 나머지 \(r\)
공식을 말로 읽으면
① 나누는 수(법 \(n\)) 에
② 몫(\(q\)) 을 곱하고
③ 나머지(\(r\). \(0 \le r < n\)으로 잡음) 를 더하면
④ 나누어지는 수(\(a\)) 로 돌아옵니다. 이 꼴로는 단 한 가지로만 쓸 수 있으며, \(r\)이 ‘\(a\)를 \(n\)으로 나눈 나머지(\(a \bmod n\))’가 됩니다
간단한 예
38을 12로 나누면(시계에서 ‘38시’가 2시가 되는 것과 같은 계산입니다)
나누어지는 수 38 \(=\) 나누는 수 12 \(\times\) 몫 3 \(+\) 나머지 2
\(38 = 12 \times 3 + 2\)
\(38 \bmod 12 = 2\)
이해의 핵심
나머지 \(r\)은 ‘\(0 \le r < n\)’의 범위로 잡는 것이 수학의 약속입니다. 음수에서도 마찬가지여서, \(-7\)을 \(3\)으로 나눌 때는 \(-7 = 3 \times (-3) + 2\)처럼 몫을 작은 쪽 정수(\(-3\))까지 내려서 나머지를 \(2\)로 만듭니다(내림 나눗셈). 한편 프로그래밍의 % 연산자는 언어마다 방식이 다릅니다. C·Java·JavaScript의 -7 % 3은 몫을 0에 가까운 쪽(\(-2\))으로 버리기 때문에 \(-1\)이 됩니다(나머지의 부호가 나누어지는 수와 같아지는 방식). Python·Ruby의 %와 Excel의 MOD 함수는 나머지의 부호가 나누는 수와 같아지는 방식이라서 수학과 같은 \(2\)를 돌려줍니다. 음수의 나머지를 다루는 프로그램에서는 이 차이가 그대로 버그의 원인이 되므로 주의하세요.
합동식의 정의(a ≡ b (mod n)이란)
수학 표기 (일반적인 수식)
\(a - b\) \(=\) \(n\) \(\times\) \(m\)
말로 쓴 표기 (기호를 말로 바꾼 식)
③ 두 정수의 차 \(a - b\) \(=\) ① 법 \(n\) \(\times\) ② 어떤 정수 \(m\)
공식을 말로 읽으면
① 법(\(n\)) 을
② 어떤 정수(\(m\)) 배 한 것이
③ 두 정수의 차(\(a - b\)) 와 딱 같을 때(= 차가 \(n\)의 배수일 때) \(a \equiv b \pmod{n}\)으로 쓰고, ‘\(a\)와 \(b\)는 \(n\)을 법으로 하여 합동’이라고 합니다
간단한 예
38과 14는 12를 법으로 하여 합동입니다(\(38 \equiv 14 \pmod{12}\))
차(38 − 14 = 24) \(=\) 법 12 \(\times\) 정수 2
\(38 - 14 = 24 = 12 \times 2\)
\(38 \equiv 14 \pmod{12}\)
이해의 핵심
‘차가 \(n\)의 배수’라는 것과 ‘\(n\)으로 나눈 나머지가 같다’는 것은 같은 내용을 바꿔 말한 것입니다(실제로 \(38 \bmod 12 = 2\), \(14 \bmod 12 = 2\)로 나머지가 같습니다). 그래서 합동식은 ‘나머지에만 주목한 등식’으로 읽을 수 있습니다. 시계를 떠올려 보면, 38시도 14시도 2시도 문자판에서는 같은 위치를 가리킵니다. mod \(n\)의 세계는 ‘\(n\)으로 한 바퀴 도는 시계판’이고, 합동인 수끼리는 시계판의 같은 위치에 있는 수입니다.
곱셈과 나머지의 관계(거듭제곱의 나머지의 바탕)
수학 표기 (일반적인 수식)
\((a \times b) \bmod n\) \(=\) \(\{(a \bmod n) \times (b \bmod n)\} \bmod n\)
말로 쓴 표기 (기호를 말로 바꾼 식)
② 곱의 나머지 \(=\) ① 각각의 나머지를 곱한 뒤 구한 나머지
공식을 말로 읽으면
① 각각의 나머지를 곱한 뒤 구한 나머지 를 계산해도
② 곱의 나머지 와 같아집니다(먼저 나머지로 고친 뒤에 곱해도 됩니다)
간단한 예
38 × 15를 12로 나눈 나머지는 각각의 나머지인 2와 3만으로 구할 수 있습니다
곱(38 × 15 = 570)의 나머지 \(=\) 나머지 2 × 나머지 3 = 6
\(38 \bmod 12 = 2,\quad 15 \bmod 12 = 3\)
\(2 \times 3 = 6\)
\((38 \times 15) \bmod 12 = 570 \bmod 12 = 6\)
이해의 핵심
이 성질 덕분에 큰 수의 곱셈을 끝까지 하지 않아도 먼저 나머지로 고친 뒤에 곱해도 됩니다. 거듭제곱은 곱셈의 반복이므로 \(7^{100}\) 같은 거대한 수를 실제로 만들지 않아도 나머지만 따라가면 계산할 수 있습니다. 이것이 반복 제곱법(제곱할 때마다 나머지를 구하면서 지수를 2의 거듭제곱의 합으로 분해해 곱하는 방법)의 바탕이며, 이 계산기의 ‘거듭제곱의 나머지’ 모드도 이 방법으로 풀이 과정을 보여 줍니다. 또한 거듭제곱의 나머지는 종류가 \(n\)가지뿐이므로 반드시 어딘가에서 같은 나머지로 돌아와 주기적으로 되풀이됩니다. 예를 들어 \(7^{k}\)의 일의 자리(mod \(10\)의 나머지)는 7, 9, 3, 1의 4개를 차례로 빙글빙글 돕니다. 이 주기를 찾는 풀이는 문제집이나 수학 경시대회의 단골입니다.
합동식의 성질(양변끼리 더하기·빼기·곱하기)
수학 표기 (일반적인 수식)
\(a + c\) \(\equiv\) \(b + d\) \(\pmod{n}\)
\(a - c\) \(\equiv\) \(b - d\) \(\pmod{n}\)
\(a \times c\) \(\equiv\) \(b \times d\) \(\pmod{n}\)
말로 쓴 표기 (기호를 말로 바꾼 식)
① 왼쪽끼리의 합 \(a + c\) \(\equiv\) ② 오른쪽끼리의 합 \(b + d\) \(\pmod{n}\)
왼쪽끼리의 차 \(a - c\) \(\equiv\) 오른쪽끼리의 차 \(b - d\) \(\pmod{n}\)
왼쪽끼리의 곱 \(a \times c\) \(\equiv\) 오른쪽끼리의 곱 \(b \times d\) \(\pmod{n}\)
공식을 말로 읽으면
① \(a \equiv b\), \(c \equiv d \pmod{n}\)일 때 왼쪽끼리 더한 것·뺀 것·곱한 것 은
② 오른쪽끼리 더한 것·뺀 것·곱한 것 과 각각 합동인 채로 남습니다(합동식은 보통의 등식과 같은 감각으로 더하고 빼고 곱할 수 있습니다)
간단한 예
\(38 \equiv 2\), \(15 \equiv 3 \pmod{12}\)를 쓰면
38 + 15 = 53 \(\equiv\) 2 + 3 = 5 \(\pmod{12}\)
\(38 + 15 = 53 \equiv 5,\quad 2 + 3 = 5 \pmod{12}\)
\(38 \times 15 = 570 \equiv 6,\quad 2 \times 3 = 6 \pmod{12}\)
이해의 핵심
큰 수의 계산이라도 먼저 나머지로 고친 뒤에 더하고 빼고 곱할 수 있다는 것이 이 성질의 편리한 점입니다. 다만 나눗셈만은 자유롭게 할 수 없습니다. 예를 들어 \(6 \equiv 12 \pmod{6}\)은 성립하지만, 양변을 2로 나눈 \(3 \equiv 6 \pmod{6}\)은 성립하지 않습니다(차 3은 6의 배수가 아닙니다). 양변을 나눠도 되는 것은 나누는 수와 법이 서로소(최대공약수가 1)일 때뿐입니다.
정수 \(a\)를 \(n\)으로 나눈 나머지는 \(a = n \times q + r\)(\(0 \le r < n\))의 꼴로 단 한 가지로 썼을 때의 \(r\)입니다. 합동식 \(a \equiv b \pmod{n}\)은 ‘\(a\)와 \(b\)의 차가 \(n\)의 배수(= \(n\)으로 나눈 나머지가 같음)’라는 뜻이며, 더하기·빼기·곱하기를 등식과 같은 감각으로 할 수 있습니다. 이 성질 덕분에 큰 거듭제곱의 나머지도 나머지만 따라가는 반복 제곱법으로 빠르게 구할 수 있습니다.

용어·기호 해설

기호

\(\equiv\) 합동 (~와 합동이다) 합동을 나타내는 기호입니다. 등호(=)의 선을 3개로 늘린 모양으로, ‘완전히 같다’보다 느슨한 ‘나머지의 세계에서는 같다’를 나타냅니다.
\(\bmod\) (mod) 모드 법을 나타내는 기호입니다. 영어 modulus(법)의 줄임말로, 라틴어 modulus(자, 척도)에서 왔다고 합니다. ‘\(a \bmod n\)’은 ‘\(a\)를 \(n\)으로 나눈 나머지’, 식 뒤의 ‘\(\pmod{n}\)’은 ‘\(n\)을 법으로 하여 생각한다’는 선언입니다.
\(a,\ b\) 에이, 비 나머지를 알아볼 정수입니다. 합동식에서는 좌우에 놓이는 2개의 정수입니다. ‘정해진 수’를 나타낼 때는 알파벳 앞쪽의 문자를 쓰는 관례가 있습니다.
\(n\) 엔 법(무엇으로 나눈 나머지로 생각할지를 정하는 수)입니다. number(수)의 머리글자 \(n\)을 자주 씁니다. 이 페이지에서는 1 이상의 정수입니다.
\(q\) 큐 몫입니다. quotient(몫)의 머리글자입니다. 음수의 나눗셈에서는 나머지를 0 이상으로 만들기 위해 몫을 작은 쪽 정수로 내립니다(내림 나눗셈).
\(r\) 알 나머지입니다. remainder(나머지)의 머리글자입니다. 수학의 약속으로는 \(0 \le r < n\)의 범위로 잡습니다.
\(m\) 엠 합동식의 정의에 나오는 ‘차가 법의 몇 배인지’를 나타내는 정수입니다. 음의 정수나 0일 때도 있습니다.
\(a^{k}\) 에이의 케이제곱 \(a\)를 \(k\)번 곱한 것(거듭제곱)입니다. 오른쪽 위의 작은 수 \(k\)가 ‘곱하는 횟수’를 나타내는 지수입니다.
% 퍼센트 (나머지 연산자로는 모드) 많은 프로그래밍 언어에서 나머지를 구하는 나머지 연산자입니다. 백분율의 퍼센트와 같은 기호지만 뜻이 다릅니다. C·Java·JavaScript에서는 음수에 대한 결과가 수학의 나머지와 다를 수 있습니다(첫 번째 공식의 핵심 참고).

용어

나머지 나눗셈에서 나누어떨어지지 않고 남는 수입니다. 수학에서는 \(0\) 이상, 나누는 수 미만으로 잡는 것이 약속입니다. 영어로는 remainder라고 합니다.
몫 나눗셈에서 ‘몇 번 뺄 수 있는지’에 해당하는 정수입니다. 나눗셈의 기본식 \(a = n \times q + r\)의 \(q\)입니다.
법 ‘무엇으로 나눈 나머지로 생각할지’를 정하는 수 \(n\)을 말합니다. 시계판으로 말하면 한 바퀴의 눈금 수에 해당합니다. ‘12를 법으로 하여’는 ‘12로 나눈 나머지로 생각해서’라는 뜻입니다. 영어로는 modulus라고 합니다.
합동 두 정수를 법 \(n\)으로 나눈 나머지가 같은 것입니다. 도형의 합동(모양과 크기가 같음)과는 다른, 정수의 성질에 관한 용어입니다.
합동식 \(a \equiv b \pmod{n}\) 꼴의 식입니다. 등식과 같은 감각으로 더하기·빼기·곱하기 변형을 할 수 있어서 나머지의 계산을 식의 변형으로 진행할 수 있습니다. 주로 대학의 정수론이나 수학 경시대회 준비에서 배웁니다.
배수 어떤 정수를 정수배 한 수입니다. ‘차가 법의 배수인 것’이 합동의 정의입니다.
내림 나눗셈 몫을 작은 쪽 정수로 내리는 나눗셈 방식입니다(floor division). 나누는 수가 양수라면 음수를 나누어도 나머지가 0 이상이 됩니다. Python의 // 연산자나 Excel의 INT 함수가 이 방식입니다.
나머지 연산자 프로그래밍에서 나머지를 구하는 %를 말합니다. C·Java·JavaScript는 몫을 0 쪽으로 버리는 방식(나머지의 부호가 나누어지는 수와 같음), Python·Ruby는 내림 나눗셈 방식(나머지의 부호가 나누는 수와 같아서 법이 양수라면 0 이상)입니다.
반복 제곱법 제곱을 되풀이하면서 나머지를 구하고, 지수를 2의 거듭제곱의 합으로 분해해 곱함으로써 큰 거듭제곱의 나머지를 적은 곱셈으로 구하는 방법입니다. 분할 정복을 이용한 거듭제곱(이진 거듭제곱)이라고도 하며, RSA 암호 등의 구현에 쓰입니다.
나머지에 의한 분류(잉여류) 정수를 ‘\(n\)으로 나눈 나머지’로 묶는 생각입니다. mod \(n\)의 세계에서는 모든 정수가 나머지 \(0\)~\(n-1\)의 \(n\)가지로 분류됩니다. 짝수와 홀수는 2로 나눈 나머지에 의한 분류입니다.
주기성 거듭제곱의 나머지가 같은 순서를 되풀이하는 성질입니다. 나머지는 \(n\)가지뿐이므로 반드시 어딘가에서 같은 나머지로 돌아옵니다. 일의 자리 문제(mod 10)에서 주기를 찾는 것은 문제집의 단골입니다.
서로소 두 정수의 최대공약수가 1인 것입니다. 합동식의 양변을 같은 수로 나눠도 되는 조건에 나옵니다.

먼저 알아 두면 좋은 내용

이 페이지의 계산을 ‘뜻을 이해하고’ 쓸 수 있도록 먼저 알아 두면 좋은 내용을 정리했습니다.
막히면 이 표의 내용으로 돌아가 복습하는 것이 지름길입니다.

나머지가 있는 나눗셈(초등학교 3~4학년, 8~10세)
  • \(17 \div 5 = 3 \cdots 2\) 꼴의 계산을 할 수 있을 것
  • ‘나누는 수 × 몫 + 나머지 = 나누어지는 수’로 검산할 수 있을 것
약수와 배수(초등학교 5학년, 10~11세)
  • \(24\)가 \(12\)의 배수임을 알 것
  • 최대공약수의 뜻을 알 것(합동식의 나눗셈 조건 ‘서로소’에서 씁니다)
정수와 유리수(중학교 1학년, 12~13세)
  • 음수를 포함한 덧셈·뺄셈·곱셈을 할 수 있을 것(예: \(3 \times (-3) = -9\))
  • 수직선 위에서 \(-3\)이 \(-2\)보다 작다(왼쪽에 있다)는 것을 알 것
거듭제곱과 지수법칙(중학교 1~2학년, 12~14세)
  • \(3^{4} = 3 \times 3 \times 3 \times 3 = 81\)처럼 오른쪽 위의 지수가 ‘곱하는 횟수’를 나타낸다는 것을 알 것
  • 지수법칙 \(a^{m} \times a^{n} = a^{m+n}\), \((a^{m})^{n} = a^{mn}\)을 쓸 수 있을 것(반복 제곱법의 근거가 됩니다)
정수의 나눗셈 등식(정수론의 기초)
  • 정수 \(a\)를 양의 정수 \(n\)으로 나누면 \(a = nq + r\)(\(0 \le r < n\))의 꼴로 단 한 가지로 쓸 수 있다는 것을 알 것
  • ‘나머지로 정수를 분류하는’ 생각을 접해 본 적이 있을 것(짝수·홀수는 2로 나눈 나머지에 의한 분류입니다)

Excel로 계산하는 방법

아래 표를 통째로 복사해 Excel의 A1 셀에 붙여 넣으면 그대로 사용할 수 있습니다.
‘a mod n(나머지)’을 구하는 표
나누어지는 수 a -7
법(나누는 수) n 3
수학의 나머지(0 이상) =MOD(B1,B2)
몫(내림 나눗셈) =INT(B1/B2)
검산 n×몫+나머지 =B2*B4+B3
C·Java 방식의 나머지(0 쪽으로 버림) =B1-B2*TRUNC(B1/B2)
‘합동 판정 a ≡ b (mod n)’을 하는 표
정수 a 38
정수 b 14
법 n 12
차 a−b =B1-B2
차를 n으로 나눈 나머지 =MOD(B4,B3)
판정(TRUE이면 합동) =MOD(B4,B3)=0
‘거듭제곱의 나머지(반복 제곱법)’를 구하는 표
밑 a 7
지수 k 100
법 n 13
a의 1제곱의 나머지 =MOD(B1,B3)
a의 2제곱의 나머지(바로 위를 제곱해서 나머지) =MOD(B4^2,$B$3)
a의 4제곱의 나머지 =MOD(B5^2,$B$3)
a의 8제곱의 나머지 =MOD(B6^2,$B$3)
a의 16제곱의 나머지 =MOD(B7^2,$B$3)
a의 32제곱의 나머지 =MOD(B8^2,$B$3)
a의 64제곱의 나머지 =MOD(B9^2,$B$3)
100=64+32+4를 조합한 나머지 =MOD(MOD(B10*B9,$B$3)*B6,$B$3)
붙여 넣으면 위쪽 행(입력)을 바꾸기만 해도 아래쪽 행이 자동으로 계산됩니다.
Excel의 MOD 함수는 이 계산기와 같은 ‘수학의 나머지’(0 이상)를 돌려줍니다. 음수라도 =MOD(-7,3)은 2입니다. C·Java 방식의 나머지를 알고 싶을 때는 몫을 0 쪽으로 버리는 TRUNC를 쓴 첫 번째 표의 마지막 행을 쓰세요.
첫 번째 표는 −7을 3으로 나누는 예로, 나머지는 2, 몫은 −3이 됩니다.
두 번째 표는 38 ≡ 14 (mod 12)의 판정으로, 차 24의 나머지가 0이 되어 TRUE(합동)가 나옵니다.
세 번째 표는 7의 100제곱을 13으로 나눈 나머지를 반복 제곱법으로 구하는 표로, 답은 9입니다. ‘^’는 거듭제곱 기호입니다. Excel의 수치는 약 15자리까지만 정확하게 다룰 수 있으므로 법 n이 7자리를 넘으면 제곱한 값의 정밀도가 모자라게 됩니다. 그럴 때는 이 페이지의 계산기나 Python을 쓰세요.

Google 스프레드시트로 계산하는 방법

아래 표를 통째로 복사해 Google 스프레드시트의 A1 셀에 붙여 넣으면 그대로 사용할 수 있습니다.
‘a mod n(나머지)’을 구하는 표
나누어지는 수 a -7
법(나누는 수) n 3
수학의 나머지(0 이상) =MOD(B1,B2)
몫(내림 나눗셈) =INT(B1/B2)
검산 n×몫+나머지 =B2*B4+B3
C·Java 방식의 나머지(0 쪽으로 버림) =B1-B2*TRUNC(B1/B2)
‘합동 판정 a ≡ b (mod n)’을 하는 표
정수 a 38
정수 b 14
법 n 12
차 a−b =B1-B2
차를 n으로 나눈 나머지 =MOD(B4,B3)
판정(TRUE이면 합동) =MOD(B4,B3)=0
‘거듭제곱의 나머지(반복 제곱법)’를 구하는 표
밑 a 7
지수 k 100
법 n 13
a의 1제곱의 나머지 =MOD(B1,B3)
a의 2제곱의 나머지(바로 위를 제곱해서 나머지) =MOD(B4^2,$B$3)
a의 4제곱의 나머지 =MOD(B5^2,$B$3)
a의 8제곱의 나머지 =MOD(B6^2,$B$3)
a의 16제곱의 나머지 =MOD(B7^2,$B$3)
a의 32제곱의 나머지 =MOD(B8^2,$B$3)
a의 64제곱의 나머지 =MOD(B9^2,$B$3)
100=64+32+4를 조합한 나머지 =MOD(MOD(B10*B9,$B$3)*B6,$B$3)
Excel과 같은 수식(MOD, INT, TRUNC)을 그대로 쓸 수 있습니다. 표를 통째로 복사해 A1 셀에 붙여 넣고, 입력을 원하는 값으로 바꿔 주세요.

Python으로 계산하는 방법

a = -7
n = 3

# Python의 %는 이 계산기와 같은 ‘수학의 나머지’(법이 양수라면 0 이상)를 돌려준다
print(a % n)                 # 2

# divmod는 내림 나눗셈의 몫과 나머지를 함께 돌려준다(a = n × 몫 + 나머지)
quotient, remainder = divmod(a, n)
print(quotient, remainder)   # -3 2

# 합동 판정: 38 ≡ 14 (mod 12)인가(차가 12의 배수인지로 판정)
print((38 - 14) % 12 == 0)   # True

# 거듭제곱의 나머지: 7의 100제곱을 13으로 나눈 나머지
# pow의 인수 3개 버전은 반복 제곱법으로 계산하므로 거대한 지수라도 순식간에 끝난다
print(pow(7, 100, 13))       # 9

def c_style_mod(x, m):
    # C·Java·JavaScript의 %와 같은 결과(몫을 0 쪽으로 버리는 방식)
    r = x % m
    if r != 0 and x < 0:
        r -= m
    return r

print(c_style_mod(-7, 3))    # -1
Python의 % 연산자는 수학의 나머지와 같아서, 나누는 수가 양수라면 음수라도 0 이상의 값을 돌려줍니다(-7 % 3은 2). 거듭제곱의 나머지는 pow(밑, 지수, 법)처럼 인수 3개 버전을 쓰면 내부에서 반복 제곱법이 작동해, 몇만 자리가 되는 거듭제곱이라도 나머지만 빠르게 계산할 수 있습니다. C·Java·JavaScript의 %와 같은 결과가 필요할 때는 마지막 함수처럼 몫을 0 쪽으로 버리는 보정을 넣습니다.

LaTeX 등 수식 언어로 쓰는 법(복사 가능)

나눗셈의 기본식(나머지의 정의)
a = n × q + r (0 ≤ r < n)
a = nq + r \quad (0 \le r < n)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>a</mi><mo>=</mo><mi>n</mi><mi>q</mi><mo>+</mo><mi>r</mi>
    <mo>,</mo>
    <mn>0</mn><mo>&#x2264;</mo><mi>r</mi><mo>&lt;</mo><mi>n</mi>
  </mrow>
</math>
a = n q + r, \ 0 <= r < n
{Quotient[a, n], Mod[a, n]}
q := floor(a/n); r := a mod n;
q = floor(a/n); r = mod(a, n);
a = nq + r (0 ≤ r < n)
합동식의 정의(a ≡ b (mod n)이란)
a ≡ b (mod n)  ⇔  a − b = n × m
a \equiv b \pmod{n} \iff a - b = nm
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>a</mi><mo>&#x2261;</mo><mi>b</mi>
    <mspace width="0.3em"/>
    <mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
    <mo>&#x21D4;</mo>
    <mi>a</mi><mo>&#x2212;</mo><mi>b</mi><mo>=</mo><mi>n</mi><mi>m</mi>
  </mrow>
</math>
a -= b (mod n) iff a - b = n m
Mod[a - b, n] == 0
(a - b) mod n = 0;
mod(a - b, n) == 0
a ≡ b (mod n)
곱셈과 나머지의 관계(거듭제곱의 나머지의 바탕)
(a × b) mod n = {(a mod n) × (b mod n)} mod n
(a \times b) \bmod n = \{(a \bmod n)(b \bmod n)\} \bmod n
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mo>(</mo><mi>a</mi><mo>&#xD7;</mo><mi>b</mi><mo>)</mo>
    <mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
    <mo>=</mo>
    <mo>{</mo>
    <mo>(</mo><mi>a</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
    <mo>&#xD7;</mo>
    <mo>(</mo><mi>b</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
    <mo>}</mo>
    <mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
  </mrow>
</math>
(a * b) mod n = ((a mod n) * (b mod n)) mod n
Mod[a b, n] == Mod[Mod[a, n] Mod[b, n], n]
(a * b) mod n = ((a mod n) * (b mod n)) mod n;
mod(a*b, n) == mod(mod(a, n)*mod(b, n), n)
(a×b) mod n = ((a mod n)×(b mod n)) mod n
합동식의 성질(양변끼리 더하기·빼기·곱하기)
a ≡ b, c ≡ d (mod n) ⇒ a+c ≡ b+d, a−c ≡ b−d, a×c ≡ b×d (mod n)
a \equiv b,\ c \equiv d \pmod{n} \Rightarrow a + c \equiv b + d,\ a - c \equiv b - d,\ ac \equiv bd \pmod{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>a</mi><mo>+</mo><mi>c</mi><mo>&#x2261;</mo><mi>b</mi><mo>+</mo><mi>d</mi>
    <mo>,</mo>
    <mi>a</mi><mo>&#x2212;</mo><mi>c</mi><mo>&#x2261;</mo><mi>b</mi><mo>&#x2212;</mo><mi>d</mi>
    <mo>,</mo>
    <mi>a</mi><mi>c</mi><mo>&#x2261;</mo><mi>b</mi><mi>d</mi>
    <mspace width="0.3em"/>
    <mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
  </mrow>
</math>
a + c -= b + d, \ a - c -= b - d, \ a c -= b d (mod n)
Mod[a + c, n] == Mod[b + d, n] && Mod[a - c, n] == Mod[b - d, n] && Mod[a c, n] == Mod[b d, n]
(a + c) mod n = (b + d) mod n;
mod(a + c, n) == mod(b + d, n)
a + c ≡ b + d (mod n)

ChatGPT 에게 물어서 계산하는 방법

당신은 수학(정수의 성질) 계산 도우미입니다. 다음 계산을 반드시 Python 코드를 실제로 실행해서 하고, 실행 결과의 수치만을 근거로 답해 주세요(암산이나 추측으로 답하지 마세요).

다음 3문제를 계산해 주세요.
1. −7을 3으로 나눈 수학의 나머지(0 이상으로 잡음)와 그때의 몫
2. 38 ≡ 14 (mod 12)가 성립하는지(차가 12의 배수인지도 보여 줄 것)
3. 7의 100제곱을 13으로 나눈 나머지(pow(7, 100, 13)을 쓸 것)

Python의 %, divmod, pow(밑, 지수, 법)를 써서 계산하고, 계산에 쓴 식과 실행 결과의 수치를 보여 주세요.

사용법
  1. 1
    숫자 입력
    계산하고 싶은 숫자를 입력란에 입력합니다
  2. 2
    계산
    ‘계산’ 버튼을 누릅니다
  3. 3
    결과 확인
    계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
  DataChef의 특징
간단하고 무료
무료로 횟수 제한 없이 변환
전문 지식 없이도 직관적이고 간단하게 사용
회원가입 불필요
접속 즉시 바로 사용 가능
개인정보를 등록하지 않고도 이용할 수 있습니다
안전하고 안심
통신을 강력하게 암호화
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
빠른 속도
기다림 없는 쾌적한 표시 속도와 변환 속도
워터마크 없음
워터마크 없음
출처 표기 불필요
상업적 이용 가능
무료로 상업적 이용 가능
상업적 이용 허가 연락도 필요 없습니다