Search
Duplicate

[토막글] 모듈러와 나머지의 차이

간단소개
%가 모듈러 연산이라고요? 땡!
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
잡지식
Scrap
태그
modulo
나머지
9 more properties

모듈러 연산

엄밀한 정의는 더 복잡하지만, 정수의 모듈러 연산 AmodBA \bmod B는 대충 이렇게 정의할 수 있습니다.
AmodB=sgn(B)×(A(A[B]×[B]))A \bmod B = sgn(B) \times \left\lparen A - \left\lparen \left\lfloor \frac{A}{\left\lbrack B \right\rbrack} \right\rfloor \times \left\lbrack B \right\rbrack \right\rparen \right\rparen
B=2B = 2
B=3B = 3
B=2B = -2
B=3B = -3
A=4A = 4
0
1
0
-1
A=3A = 3
1
0
-1
0
A=2A = 2
0
2
0
-2
A=1A = 1
1
1
-1
-1
A=0A = 0
0
0
0
0
A=1A = -1
1
2
-1
-2
A=2A = -2
0
1
0
-1
A=3A = -3
1
0
-1
0
양수의 모듈러 연산은 C의 signed integer가 표현 범위를 벗어날 때의 동작과 같습니다.

나머지 연산

나머지 연산은 말 그대로 나머지 연산을 말합니다. 여기서 A//BA // B는 나눗셈의 몫 A / B입니다.
A//B=sgn(AB)×[AB]A%B=A(A//B)×BA // B = sgn(AB) \times \left\lfloor \left\lbrack \dfrac{A}B \right\rbrack \right\rfloor \newline A \mathbin{\%} B = A - \left\lparen A // B \right\rparen \times B
B=2B = 2
B=3B = 3
B=2B = 2
B=2B = -2
A=4A = 4
0
1
0
1
A=3A = 3
1
0
1
0
A=2A = 2
0
2
0
2
A=1A = 1
1
1
1
1
A=0A = 0
0
0
0
0
A=1A = -1
-1
-1
-1
-1
A=2A = -2
0
-2
0
-2
A=3A = -3
-1
0
-1
0

차이

A와 B가 모두 양수일 때는 모듈러와 나머지가 같지만. 그 외의 경우에는 결과가 다릅니다.
A가 음수일 때도 (A+1)modB\left\lparen A + 1 \right\rparen \bmod B(AmodB)+1\left\lparen A \bmod B \right\rparen + 1 또는 00이 됩니다.
B가 음수일 때 AmodBA \bmod B(AmodB)-\left\lparen A \bmod -B \right\rparen와 같습니다.
A가 음수일 때 A%BA \mathbin{\%} B(A%B)-\left\lparen -A \mathbin{\%} B \right\rparen와 같습니다.
B가 음수일 때 A%BA \mathbin{\%} BA%BA \mathbin{\%} -B와 같습니다.

같이 보기