CSE 311 Lecture 12:
Modular Arithmetic and Applications

Emina Torlak and Kevin Zatloukal

Topics

Modular arithmetic basics
Review of Lecture 11.
Modular arithmetic properties
Congruence, addition, multiplication, proofs.
Modular arithmetic and integer representations
Unsigned, sign-magnitude, and two’s complement representation.
Applications of modular arithmetic
Hashing, pseudo-random numbers, ciphers.

Modular arithmetic basics

Review of Lecture 11.

Key definition: divisibility

Definition: $a$ divides $b$, written as $a \vert b$.
For $a\in\Z, b\in\Z$, $a \vert b \leftrightarrow \exists k\in\Z. b = ka$.

We also say that $b$ is divisible by $a$ when $a \vert b$.

Key theorem: division theorem

Division theorem
For $a\in\Z, d\in\Z$ with $d > 0$,
there exist unique integers $q, r$ with $0 \leq r < d$
such that $a = dq+r$.

That is, if we divide $a$ by $d$, we get a unique

  • quotient $q = \div{a}{d}$ and
  • non-negative remainder $r = \mod{a}{d}$.

So, $a = d(\div{a}{d}) + (\mod{a}{d})$.

Modular arithmetic properties

Congruence, addition, multiplication, proofs.

Congruence modulo a positive integer

Definition: $a$ is congruent to $b$ modulo $m$, written as $\congruent{a}{b}{m}$
For $a,b,m\in\Z$ with $m>0$, $\congruent{a}{b}{m} \leftrightarrow m \vert (a-b)$

We read “$\congruent{a}{b}{m}$” as “$a$ is congruent to $b$ modulo $m$”, which means $m \vert (a-b)$.

So, “congruence modulo $m$” is a predicate on integers, written using the notation “$\congruent{}{}{m}$”.

Congruence and equality

Congruence property
Let $a, b, m \in \Z$ with $m>0$.
Then, $\congruent{a}{b}{m}$ if and only if $\mod{a}{m} = \mod{b}{m}$.
Proof:
Suppose that $\congruent{a}{b}{m}$. Then $m \vert a-b$ by definition of congruence. So $a-b = km$ for some $k\in\Z$ by definition of divides. Therefore, $a = b + km$. By the division theorem, we can write $a = qm + r$ where $r = \mod{a}{m}$. Combining this with $a = b + km$, we have $b + km = qm + r$, so $b = (q-k)m + r$. By the uniqueness condition of the division theorem, $r = \mod{b}{m}$, so we have $\mod{a}{m} = r = \mod{b}{m}$.
Suppose that $\mod{a}{m} = \mod{b}{m}$. By the division theorem, $a = mq + (\mod{a}{m})$ and $b = ms + (\mod{b}{m})$ for some $q,s\in\Z$. Then, $a - b = (mq + (\mod{a}{m})) - (ms + (\mod{b}{m}))$ $= m(q-s) + (\mod{a}{m}-\mod{b}{m})$ $= m(q-s)$, since $\mod{a}{m} = \mod{b}{m}$. Therefore, $m \vert (a-b)$ and so $\congruent{a}{b}{m}$.

The $\mod{}{m}\ $ function vs the $\congruent{}{\!}{m}$ predicate

The $\mod{}{m}$ function takes any $a\in\Z$ and maps it to a remainder $\mod{a}{m}\in\{0, 1, \ldots, m-1\}$.

In other words, $\mod{}{m}$ places all integers that have the same remainder modulo $m$ into the same “group” (a.k.a. “congruence class”).

The $\congruent{}{\!}{m}$ predicate compares $a,b\in\Z$ and returns true if and only if $a$ and $b$ are in the same group according to the $\mod{}{m}$ function.

Modular addition property

Modular addition property
Let $m$ be a positive integer ($m \in \Z$ with $m>0$).
If $\congruent{a}{b}{m}$ and $\congruent{c}{d}{m}$, then $\congruent{a+c}{b+d}{m}$.
Proof:
Suppose that $\congruent{a}{b}{m}$ and $\congruent{c}{d}{m}$. By definition of congruence, there are $k$ and $j$ such that $a - b = km$ and $c - d = jm$. Adding these equations together, we get $(a+c)-(b+d) = m(j+k)$. Reapplying the definition of congruence, we get that $\congruent{(a+c)}{(b+d)}{m}$.

Modular multiplication property

Modular multiplication property
Let $m$ be a positive integer ($m \in \Z$ with $m>0$).
If $\congruent{a}{b}{m}$ and $\congruent{c}{d}{m}$, then $\congruent{ac}{bd}{m}$.
Proof:
Suppose that $\congruent{a}{b}{m}$ and $\congruent{c}{d}{m}$. By definition of congruence, there are $k$ and $j$ such that $a - b = km$ and $c - d = jm$. So, $a = km + b$ and $c = jm + b$. Multiplying these equations together, we get $ac = (km + b)(jm + d) = kjm^2 + kmd + bjm + bd$. Rearranging gives us $ac - bd = m(kjm + kd + bj)$. Reapplying the definition of congruence, we get that $\congruent{ac}{bd}{m}$.

Example: a proof using modular arithmetic

Let $n\in\Z$, and prove that $\congruent{n^2}{0}{4}$ or $\congruent{n^2}{1}{4}$.

Let’s look at a few examples:
$0^2 = \congruent{ 0 }{ 0 }{4}$
$1^2 = \congruent{ 1 }{ 1 }{4}$
$2^2 = \congruent{ 4 }{ 0 }{4}$
$3^2 = \congruent{ 9 }{ 1 }{4}$
$4^2 = \congruent{ 16 }{ 0 }{4}$
It looks like
$\congruent{n}{0}{2} \rightarrow \congruent{n^2}{0}{4}$
$\congruent{n}{1}{2} \rightarrow \congruent{n^2}{1}{4}$
Proof by cases:
Case 1 ($n$ is even). Suppose $\congruent{n}{0}{2}$. Then $n=2k$ for some integer $k$. So $n^2 = (2k)^2 = 4k^2$. Therefore, by definition of congruence, $\congruent{n^2}{0}{4}$.
Case 2 ($n$ is odd). Suppose $\congruent{n}{1}{2}$. Then $n=2k+1$ for some integer $k$. So $n^2 = (2k+1)^2 = 4k^2 + 4k + 1$ $=$ $4(k^2 + k) + 1$. Therefore, by definition of congruence, $\congruent{n^2}{1}{4}$.

Modular arithmetic and integer representations

Unsigned, sign-magnitude, and two’s complement representation.

Unsigned integer representation

Represent integer $x$ as a sum of $n$ powers of 2:
If $x = \sum_{i=0}^{n-1} b_i2^i$ where each $b_i\in\{0,1\}$,
then the representation is $b_{n-1}\ldots b_2 b_1 b_0$.
Examples:
$99 = 64 + 32 + 2 + 1$
$18 = 16 + 2$
So for $n = 8$:
$99 = 0110\ 0011$
$18 = 0001\ 0010$

This works for unsigned integers. How do we represented signed integers?

Sign-magnitude integer representation

If $-2^{n-1} < x < 2^{n-1}$, represent $x$ with $n$ bits as follows:
Use the first bit as the sign (0 for positive and 1 for negative), and
the remaining $n-1$ bits as the (unsigned) value.
Examples:
$99 = 64 + 32 + 2 + 1$
$18 = 16 + 2$
So for $n = 8$:
$\ \ \,99 = 0110\ 0011$
$-18 = 1001\ 0010$
$\ \ \,81 = 0101\ 0001$

The problem with this representation is that our standard arithmetic algorithms no longer work, e.g., adding the representation of -18 and 99 doesn’t give the representation of 81.

Two’s complement integer representation

Represent $x$ with $n$ bits as follows:
If $0 \leq x < 2^{n-1}$, use the $n$-bit unsigned representation of $x$.
If $-2^{n-1} \leq x < 0$, use the $n$-bit unsigned representation of $2^n - |x|$.
Key property:
Two’s complement representation of any number $y$ is equivalent to $\mod{y}{2^n}$ so arithmetic works $\mod{}{2^n}$.
Examples:
$99 = 64 + 32 + 2 + 1$
$18 = 16 + 2$
$2^8 - 18 = 256 - 18 = 238 = 128 + 64 + 32 + 8 + 4 + 2$
$81 = 64 + 16 + 1$
So for $n = 8$:
$\ \ \,99 = 0110\ 0011$
$-18 = 1110\ 1110$
$\ \ \,81 = 0101\ 0001$

Computing the two’s complement representation

For $-2^{n-1} \leq x < 0$, $x$ is represented using the $n$-bit unsigned representation of $2^n - |x|$. To compute this value:

  • Compute the $n$-bit unsigned representation of $|x|$.
  • Flip the bits of $|x|$ to get the representation of $2^n-1-|x|$.
  • Add 1 to get $2^n - |x|$.
  • This works because $x+\overline{x}$ is all 1s, which represents $2^n-1$. So $\overline{x} = 2^n - 1 - x$ and $\overline{x} + 1 = 2^n - x$.
Example: -18 in 8-bit two’s complement
18 in 8-bit unsigned: $0001\ 0010$
Flip the bits: $1110\ 1101$
Add 1: $1110\ 1110$

Applications of modular arithmetic

Hashing, pseudo-random numbers, ciphers.

Hashing

Problem:
We want to map a small number of data values from a large domain $\{0, 1, \ldots, M-1\}$ into a small set of locations $\{0, 1, \ldots, n-1\}$ to be able to quickly check if a value is present.
Solution:
Compute $\text{hash}(x) = \mod{x}{p}$ for a prime $p$ close to $n$.
Or, compute $\text{hash}(x) = \mod{ax+b}{p}$ for a prime $p$ close to $n$.
This approach depends on all of the bits of data the data.
Helps avoid collisions due to similar values.
But need to manage them if they occur.

Pseudo-random number generation

Linear Congruential method
$x_{n+1} = \mod{(ax_n + c)}{m}$

Choose $x_0$ randomly and $a, c, m$ carefully to produce a sequence of $x_n$’s.

Example
$a = 1103515245, c = 12345, m = 2^{31}$ from BSD
$x_0 = 311$
$x_1 = 1743353508, x_2 = 1197845517, x_3 = 1069836226, \ldots$

Simple ciphers

Ceasar or shift cipher
Treat letters as numbers: A = 0, B = 1, …
$f(p) = \mod{(p + k)}{26}$
$f^{-1}(p) = \mod{(p - k)}{26}$
More general version
$f(p) = \mod{(ap + b)}{26}$
$f^{-1}(p) = \mod{(a^{-1}(p - b))}{26}$

Summary

Modular arithmetic is arithmetic over a finite domain.
Key notions are divisibility and congruence modulo $m$.
Thanks to addition and multiplication properties, modular arithmetic supports familiar algebraic manipulations such as adding and multiplying together $\congruent{\,}{\!}{m}$ equations.
Modular arithmetic is the basis of computing.
Used with two’s complement representation to implement computer arithmetic.
Also used in hashing, pseudo-random number generation, and cryptography.