알고리즘 학습 페이지

모듈러 연산(Modular Arithmetic)

Xerath(제라스) 2022. 3. 23. 20:55
728x90
반응형

​모듈러 연산은 간단히 말하자면 나머지를 이용한 계산식이지만 여러 성질들이 있어 잘 사용하면 큰 수에 대한 연산 시 수고를 덜어준다.

다음은 모듈러 연산에 대한 증명 방법이다.

 

1. (A+B) % C = (A%C + B%C) % C

 

A mod C = a

B mod C = b

라고 하자.

 

A = a + iC

B = b + jC

 

(A+B) % C

= (a+b+(i+j)C) % C

= (a+b) % C

= (A mod C + B mod C) % C

 

2. (A-B) % C = (A%C - B%C) % C (1.과 같은 방식으로 증명 가능)

 

3. (A*B) % C = ((A%C) * (B%C)) % C

 

A mod C = a

B mod C = b

라고 하자.

 

A = a + iC

B = b + jC

 

(A*B) % C

= (ab + biC + ajC + ij*C^2) % C

= (ab) % C

= ((A mod C)*(B mod C)) % C

 

특히 3.과 같은 곱셈이 여러 개로 이루어진 식(가장 대표적으론 지수 형태의 수 ex)11^9)에서 분할 정복을 통해 접근할 수 있다.

11^9 mod 3

= 11^4 mod 3 * 11^4 mod 3 * 11 mod 3

= 11^2 mod 3 * 11^2 mod 3 * 11^2 mod 3 * 11^2 mod 3 * 11 mod 3

...

 

이런 식으로 2진법으로 쪼개나가는 방법을 이용할 수 있어서 계산의 편의성이 증가한다.

 

이와 더불어, 모듈러의 나눗셈 또한 존재하는데

이때는 분모의 역원을 구하고 그 값을 이용해서 식을 작성하면 된다.

ex)

 

- (7/10) mod 13을 구하고자 할 때,

 

10*4 mod 13 = 1 이므로

 

(7/10) mod 13

= (10*4 mod 13) * ((7/10) mod 13)

= 4*7 mod 13

= 2 mod 13

 

3번 곱셈의 모듈러 연산을 활용하여 구해낼 수 있다. 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형