Modular Arithmetic (original) (raw)

Last Updated : 13 May, 2026

Modular arithmetic is a system of arithmetic for numbers where numbers "wrap around" after reaching a certain value, called the modulus.

As you can see, the time values wrap after reaching 12, and 9 + 4 = 13 is computed as the remainder of 13 when divided by 12. The concept is widely used in various fields, including cryptography, computer science, and engineering.

modular

Division with Remainder

When dividing two integers, we get an equation like this:

\dfrac{A}{B} = Q \text{ remainder } R

Where:

The **modulo operator (mod) helps us focus on the remainder:

A mod B = R

**Example:

\frac{13}{5}=2 remainder 3
13mod 5=3

So, dividing 13 by 5 gives a remainder of 3

So, in modular arithmetic, numbers are reduced within a certain range, defined by the modulus. For two integers a and b, and a positive integer n, we say that a is congruent to b modulo n if their difference is an integer multiple of n. This is denoted as:

a ≡ b (mod n)

**Quotient Remainder Theorem

**Quotient Remainder Theorem states that for any pair of integers a and b (b is positive), there exist two unique integers q and r such that:

a = b x q + r
where 0 <= r < b

**Example: If a = 20, b = 6 then q = 3, r = 2, meaning:
20 = 6 x 3 + 2

Modular Operations

**Modular Addition

The rule for **Modular Addition is:

(a + b) mod m = ((a mod m) + (b mod m)) mod m

**Example:

(15 + 17) % 7
= ((15 % 7) + (17 % 7)) % 7
= (1 + 3) % 7
= 4 % 7
= 4

The same rule is to modular subtraction. We don't require much modular subtraction but it can also be done in the same way.

**Modular Multiplication

The Rule for **Modular Multiplication is:

(a x b) mod m = ((a mod m) x (b mod m)) mod m

**Example:

(12 x 13) % 5
= ((12 % 5) x (13 % 5)) % 5
= (2 x 3) % 5
= 6 % 5
= 1

**Modular Division

The **Modular Divisionis totally different from modular addition, subtraction and multiplication. It also does not exist always.

(a / b) mod m is not equal to ((a mod m) / (b mod m)) mod m.

This is calculated using the following formula:

(a / b) mod m = (a x (inverse of b if exists)) mod m

**Modular Inverse

The modular inverse of a mod m exists only if a and m are relatively prime i.e. gcd(a, m) = 1. Hence, for finding the inverse of a under modulo m, if (a x b) mod m = 1 then b is the **Modular Inverse of a.

**Example: a = 5, m = 7 (5 x 3) % 7 = 1 hence, 3 is modulo inverse of 5 under 7.

**Modular Exponentiation

Finding a^b mod m is the **Modular Exponentiation. There are two approaches for this - recursive and iterative.

**Example:

a = 5, b = 2, m = 7
(5 ^ 2) % 7 = 25 % 7 = 4

**There is often a need to efficiently calculate the value of x n mod m. This can be done in O(logn) time using the following recursion:

It is important that in the case of an even n, the value of xn/2 is calculated only once.

This guarantees that the time complexity of the algorithm is O(logn) because n is always halved when it is even.

C++ `

#include<bits/stdc++.h> #include

using namespace std; //function that calculate modular exponentiation x^n mod m. int modpower(int x, int n, int m) { if (n == 0) //base case return 1%m; long long u = modpower(x,n/2,m);
u = (uu)%m; if (n%2 == 1) //when 'n' is odd u = (ux)%m; return u; } //driver function int main() { cout<<modpower(5,2,7)<<endl; return 0; }

C

#include <stdio.h>

//function that calculate modular exponentiation x^n mod m. int modpower(int x, int n, int m) { if (n == 0) //base case return 1 % m; long long u = modpower(x, n / 2, m);
u = (u * u) % m; if (n % 2 == 1) // when 'n' is odd u = (u * x) % m; return u; }

//driver function int main() { printf("%d\n", modpower(5, 2, 7)); return 0; }

Java

import java.util.*;

class GFG { //function that calculate modular exponentiation x^n mod m. public static int modpower(int x, int n, int m) { if (n == 0) //base case return 1 % m; long u = modpower(x, n / 2, m);
u = (u * u) % m; if (n % 2 == 1) // when 'n' is odd u = (u * x) % m; return (int)u; }

//driver function
public static void main(String[] args) {
    System.out.println(modpower(5, 2, 7));
}

}

Python

#function that calculate modular exponentiation x^n mod m. def modpower(x, n, m): if n == 0: # base case return 1 % m u = modpower(x, n // 2, m) u = (u * u) % m if n % 2 == 1: # when 'n' is odd u = (u * x) % m return u

#driver function print(modpower(5, 2, 7))

Javascript

// function that calculates modular exponentiation x^n mod m. function modpower(x, n, m) { if (n == 0) { // base case return 1 % m; } let u = modpower(x, Math.floor(n / 2), m); u = (u * u) % m; if (n % 2 == 1) { // when 'n' is odd u = (u * x) % m; } return u; }

// driver function console.log(modpower(5, 2, 7));

`

output:
4

**Time complexity: O(logn), because n is always halved when it is even.

Fermat’s theorem states that

xm−1 mod m = 1

when m is prime and x and m are coprime. This also yields

xk mod m = xk mod (m−1) mod m.

Applications of Modular Arithmetic

**1. Cryptography: Modular arithmetic is fundamental in cryptography, particularly in public-key cryptosystems like RSA, which relies on the difficulty of factoring large numbers and properties of modular exponentiation.

**2. Computer Science: Modular arithmetic is used in hashing algorithms, checksums, and cryptographic hash functions to ensure data integrity and security.

**3. Number Theory: In number theory, modular arithmetic helps solve congruences and Diophantine equations, contributing to the understanding of integer properties and relationships.

**4. Digital Signal Processing: Modular arithmetic is used in algorithms for efficient computation in digital signal processing, particularly in the Fast Fourier Transform (FFT) and error-correcting codes.

**5. Clock Arithmetic: The concept of modular arithmetic is akin to how clocks work, where the hours wrap around after reaching 12 or 24.

Solved Examples of Modular Arithmetic

**Example 1: Problem: Show that 38 ≡ 14 (mod 12)

**Solution:

38 = 3 × 12 + 2
14 = 1 × 12 + 2

Both 38 and 14 have the same remainder (2) when divided by 12.

Therefore, 38 ≡ 14 (mod 12)

**Example 2: Addition in Modular Arithmetic

**Problem: Compute (27 + 19) mod 7

**Solution:

27 ≡ 6 (mod 7) because 27 = 3 × 7 + 6
19 ≡ 5 (mod 7) because 19 = 2 × 7 + 5
(27 + 19) mod 7 ≡ (6 + 5) mod 7 ≡ 11 mod 7 ≡ 4

**Example 3: Multiplication in Modular Arithmetic

**Problem: Compute (23 × 17) mod 5

**Solution:

23 ≡ 3 (mod 5) because 23 = 4 × 5 + 3
17 ≡ 2 (mod 5) because 17 = 3 × 5 + 2
(23 × 17) mod 5 ≡ (3 × 2) mod 5 ≡ 6 mod 5 ≡ 1

**Example 4: Modular Exponentiation

**Problem: Compute 7^100 mod 11

**Solution:

Use Euler's theorem: a^φ(n) ≡ 1 (mod n) for coprime a and n

φ(11) = 10 (Euler's totient function for prime 11)
7^100 ≡ 7^(10 × 10) ≡ (7^10)^10 ≡ 1^10 ≡ 1 (mod 11)

**Example 5: Linear Congruence

**Problem: Solve 5x ≡ 3 (mod 7)

**Solution:

Multiply both sides by 3 (modular multiplicative inverse of 5 mod 7):

3 × 5x ≡ 3 × 3 (mod 7)
15x ≡ 9 (mod 7)
x ≡ 2 (mod 7)

**Example 6: Chinese Remainder Theorem

**Problem: Solve the system of congruences:
**x ≡ 2 (mod 3)
**x ≡ 3 (mod 5)
**x ≡ 2 (mod 7)

**Solution:

M = 3 × 5 × 7 = 105

M1 = 105/3 = 35, y1 = 35^(-1) mod 3 = 2
M2 = 105/5 = 21, y2 = 21^(-1) mod 5 = 1
M3 = 105/7 = 15, y3 = 15^(-1) mod 7 = 1

x = (2 × 35 × 2 + 3 × 21 × 1 + 2 × 15 × 1) mod 105
= (140 + 63 + 30) mod 105
= 233 mod 105
= 23

Verify: 23 ≡ 2 (mod 3), 23 ≡ 3 (mod 5), 23 ≡ 2 (mod 7)

**Example 7: Modular Inverse

**Problem: Find the modular inverse of 3 modulo 11

**Solution:

Use extended Euclidean algorithm:

11 = 3 × 3 + 2
3 = 1 × 2 + 1
2 = 2 × 1 + 0

Working backwards:

1 = 3 - 1 × 2
1 = 3 - 1 × (11 - 3 × 3)
1 = 4 × 3 - 1 × 11

Therefore, 3^(-1) ≡ 4 (mod 11)
Verify: (3 × 4) mod 11 = 12 mod 11 = 1

**Example 8: Fermat's Little Theorem

**Problem: Calculate 7^222 mod 11

**Solution:

Fermat's Little Theorem states that if p is prime and a is not divisible by p, then:
a^(p-1) ≡ 1 (mod p)

Here, p = 11 (prime) and a = 7 (not divisible by 11)
So, 7^10 ≡ 1 (mod 11)

Now, 222 = 22 × 10 + 2
Therefore, 7^222 ≡ (7^10)^22 × 7^2 (mod 11)
≡ 1^22 × 7^2 (mod 11)
≡ 49 (mod 11)
≡ 5 (mod 11)

Practice Problems on Modular Arithmetic

1. Calculate 47 mod 7.

2. Solve the linear congruence: 5x ≡ 3 (mod 8)

3. Find the modular multiplicative inverse of 5 modulo 11.

4. Using Fermat's Little Theorem, calculate 7100 mod 11.

5. Solve the system of congruences: x ≡ 2 (mod 3)
x ≡ 3 (mod 5)
x ≡ 4 (mod 7)

6. Determine whether 29 is prime using Wilson's Theorem.

7. Calculate (17 × 23 + 31) mod 13.

8. Find the remainder when 3200 is divided by 7.

9. Solve the congruence: x2 ≡ 4 (mod 11)

10. Given that 710 ≡ 1 (mod 11), find 7103 mod 11 without direct computation.