Modular Arithmetic


모듈러 연산은 어떤 수를 특정한 값(모듈러, modulus)으로 나눈 나머지를 계산하는 연산으로, 쉽게 말해 나머지 연산이다.

A mod B = R
  • A : 나눠지는 수 (피제수, Dividend)
  • B : 나누는 수 (제수, Modulus)
  • R : 나머지 (Remainder)

 

 

 

덧셈, 뺄셈, 곱셈의 모듈러 연산


모듈러 연산에서 덧셈, 뺄셈, 곱셈은 분배 법칙을 따른다. 연산 후 모듈러를 취하는 것과, 각각 모듈러를 취한 후 연산하는 것이 동일하다는 뜻이다.

  • 덧셈
(A + B) mod C = [(A mod C) + (B mod C)] mod C
  • 뺄셈 (음수가 나올 경우, C를 더해서 양수로 만들 수 있음)
(A - B) mod C = [(A mod C) - (B mod C) + C] mod C
  • 곱셈
(A * B) mod C = [(A mod C) * (B mod C)] mod C

 

 

 

거듭제곱(지수 연산)의 모듈러 연산


(A^B) mod C = [(A mod C)^B] mod C

 

예제

  • 모듈러 연산 X
(6⁴) mod 5
= (6 * 6 * 6 * 6) mod 5
= 1296 mod 5
= 1

 

  • 모듈러 연산
(6⁴) mod 5
= [(6 mod 5)⁴] mod 5
= (1⁴) mod 5
= 1

 

 

 

모듈러 역원 (Modular Inverse)


어떤 수 A에 대해 다음을 만족하는 X를 찾는 것을 뜻한다. 즉, A를 곱해서 1이 되는 숫자 X가 모듈러 역원이다. 모듈러 역원이 존재하려면 A와 M의 서로소(최대공약수)가 1이어야 한다.

A * X = 1 mod M

 

 

 

활용


(1) 큰 수 연산 (빠른 거듭제곱)

  • 시간복잡도가 O(log n)

(2) 암호학 (RSA 암호 알고리즘)

  • RSA 암호화에서 공개 키와 개인 키를 생성할 때 모듈러 연산을 사용한다.
  • 큰 소수를 기반으로 하기 때문에 해킹이 어려운, 보다 강력한 보안을 제공한다.

(3) 해싱과 데이터 구조

  • 해시 테이블에서 충돌 방지를 위해 모듈러 연산을 사용한다.
  • 원형 큐나 해시 함수 등 특정한 범위 안에서 값이 순환하는 데이터 구조에서 사용된다.

 

 

 

알고리즘


 

 

 

728x90
반응형