모듈로 연산, 또는 나머지 연산은 주어진 수를 특정 수로 나눈 나머지를 구하는 연산입니다.
이 연산은 수 이론, 암호학, 컴퓨터 과학 등에서 중요한 역할을 합니다.
주어진 두 정수 \( a \)와 \( n \)이 있을 때, \( a \)를 \( n \)으로 나눈 나머지를 구하는 연산을 모듈로 연산이라고 합니다.
이 때, \( a \)를 피제수, \( n \)을 제수라고 합니다.
표기법: \( a \mod n \)
수식: \[ a \mod n = r \] 여기서 \( r \)은 \( a \)를 \( n \)으로 나눈 나머지이며, \( 0 \leq r < n \)입니다.
이 연산의 결과는 각각 다음과 같습니다:
이 내용을 파이썬으로 구현한게 "%"를 사용한 mod 연산입니다!
나머지 연산자 %는 두 숫자를 나눈 후 그 나머지를 구하는 연산자입니다. 예를 들어, 7 % 3은 7을 3으로 나눈 나머지인 1을 반환합니다.
예제:
a = 7
b = 3
result = a % b # 7을 3으로 나눈 나머지
print(result) # 출력: 1
나머지 분배 법칙은 덧셈, 뺄셈, 곱셈 등의 연산을 나머지 연산과 결합하는 방법을 설명하는 법칙입니다. 이 법칙을 사용하면 모듈로 연산을 더 쉽게 이해하고 계산할 수 있습니다. 나머지 분배 법칙은 다음과 같은 세 가지 주요 연산에 적용됩니다: 덧셈, 뺄셈, 곱셈.
덧셈에 대한 나머지 분배 법칙은 (a + b) % m이 (a % m + b % m) % m과 같다는 것을 의미합니다. 이 법칙을 사용하면 두 숫자의 덧셈 결과를 모듈로 연산으로 쉽게 계산할 수 있습니다.
수식: \[ (a + b) \% m = ((a \% m) + (b \% m)) \% m \]
예제:
a = 17
b = 23
m = 5
# 직접 계산
result1 = (a + b) % m # (17 + 23) % 5 = 40 % 5 = 0
# 나머지 분배 법칙을 사용한 계산
result2 = ((a % m) + (b % m)) % m # (17 % 5 + 23 % 5) % 5 = (2 + 3) % 5 = 5 % 5 = 0
print(result1) # 출력: 0
print(result2) # 출력: 0
뺄셈에 대한 나머지 분배 법칙은 (a - b) % m이 (a % m - b % m + m) % m과 같다는 것을 의미합니다. 이 법칙을 사용하면 두 숫자의 뺄셈 결과를 모듈로 연산으로 쉽게 계산할 수 있습니다.
수식: \[ (a - b) \% m = ((a \% m) - (b \% m) + m) \% m \]
예제:
a = 17
b = 23
m = 5
# 직접 계산
result1 = (a - b) % m # (17 - 23) % 5 = -6 % 5 = 4
# 나머지 분배 법칙을 사용한 계산
result2 = ((a % m) - (b % m) + m) % m # (17 % 5 - 23 % 5 + 5) % 5 = (2 - 3 + 5) % 5 = 4 % 5 = 4
print(result1) # 출력: 4
print(result2) # 출력: 4
곱셈에 대한 나머지 분배 법칙은 (a * b) % m이 (a % m * b % m) % m과 같다는 것을 의미합니다. 이 법칙을 사용하면 두 숫자의 곱셈 결과를 모듈로 연산으로 쉽게 계산할 수 있습니다.
수식: \[ (a \times b) \% m = ((a \% m) \times (b \% m)) \% m \]
예제:
a = 17
b = 23
m = 5
# 직접 계산
result1 = (a * b) % m # (17 * 23) % 5 = 391 % 5 = 1
# 나머지 분배 법칙을 사용한 계산
result2 = ((a % m) * (b % m)) % m # (17 % 5 * 23 % 5) % 5 = (2 * 3) % 5 = 6 % 5 = 1
print(result1) # 출력: 1
print(result2) # 출력: 1
이 법칙들을 이해하고 활용하면 특히 큰 수의 연산이나 암호학에서 효율적으로 계산을 수행할 수 있습니다. 나머지 분배 법칙은 모듈로 연산을 쉽게 처리할 수 있도록 도와주는 중요한 수학적 개념입니다.