Modular Arithmetic
Modular Arithmetic is a system of arithmetic for integers where numbers wrap around after reaching a certain value called the modulus. It is a crucial concept in various fields, especially in cryptography and number theory.
Core Concepts
Modulus
- The modulus is the integer at which numbers wrap around.
- For any integer , the expression gives the remainder of the division of by .
Basic Operations
-
Addition :
Example:Code:
C++
int modular_add(int a, int b, int m) {
return (a + b) % m;
}Java
public static int modularAdd(int a, int b, int m) {
return (a + b) % m;
}Python
def modular_add(a, b, m):
return (a + b) % mTime Complexity:
-
Subtraction :
Example:Code:
C++
int modular_sub(int a, int b, int m) {
return (a - b + m) % m; // ensure non-negative result
}Java
public static int modularSub(int a, int b, int m) {
return (a - b + m) % m; // ensure non-negative result
}Python
def modular_sub(a, b, m):
return (a - b + m) % m # ensure non-negative resultTime Complexity:
-
Multiplication::
Example:Code:
C++
int modular_mul(int a, int b, int m) {
return (a * b) % m;
}Java
public static int modularMul(int a, int b, int m) {
return (a * b) % m;
}Python
def modular_mul(a, b, m):
return (a * b) % mTime Complexity:
-
Exponentiation:
Example:Code:
C++
int modular_pow(int base, int exp, int mod) {
int result = 1;
base = base % mod;
while (exp > 0) {
if (exp % 2 == 1) {
result = (result * base) % mod;
}
exp = exp >> 1; // equivalent to exp //= 2
base = (base * base) % mod;
}
return result;
}Java
public static int modularPow(int base, int exp, int mod) {
int result = 1;
base = base % mod;
while (exp > 0) {
if ((exp & 1) == 1) {
result = (result * base) % mod;
}
exp >>= 1; // equivalent to exp /= 2
base = (base * base) % mod;
}
return result;
}Python