관리 메뉴

사과하는 제라스

모듈러 연산(Modular Arithmetic) 본문

알고리즘 학습 페이지

모듈러 연산(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
    반응형