3. 모듈러
- 컴퓨팅에서 한 숫자를 다른 숫자로 나눈 후, 나머지를 반환한 값
a mod n
- (유클리드 나눗셈의) 나머지
- a: 피제수
- n: 제수
- a mod b = a - b * (a/b)
성질
- 덧셈 법칙
- 뺄셈 법칙
- 곱셈 법칙
- 분배 법칙
응용
- 큰 수 연산
- 암호학
- 해시 함수: 데이터를 고정된 크기의 값으로 매핑할 떄 사용됨
- 주기성 확인: 반복되는 패턴을 찾는 데 사용됨
고급
페르마의 소정리
- 소수로 모듈러 연산하였을 때 결과를 구하는 공식
- 소수 p와 p에 나누어 떨어지지 않는 정수 a가 있을 때
- a^(p) = a (mod p)
- a^(p-1) = 1 (mod p)
- a^(p-2) = 1/a (mod p)
- a^(p-2)는 a의 모듈러 역원
- a * a^(p-2) = 1 (mod p) 이므로
확장 유클리드 알고리즘
- ax + by = 1
- ax = 1 (mod b)
- 두 수가 서로소여야 모듈러 역원이 존재
- 결과값이 1이 아니라면 모듈러 연산을 반복해도 1을 얻을 수 없음
출처
'Algorithm' 카테고리의 다른 글
[기초 알고리즘] 수학: 최대공약수 (0) | 2024.10.26 |
---|---|
[고급 알고리즘] Graph(Shortest Path): Floyd-Warshall (0) | 2024.09.20 |
[고급 알고리즘] Greedy: Activity Selection Problem (0) | 2024.09.20 |
[알고리즘] Range: Sliding Window (0) | 2024.09.19 |
[고급 알고리즘] Dynamic Programming: Travelling salesman problem (0) | 2024.03.01 |