Modular Arithmetic and Applications

Emina Torlak and Kevin Zatloukal

- 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.

Review of Lecture 11.

- 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$.

- 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})$.

Congruence, addition, multiplication, proofs.

- 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 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 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
- 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
- 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}$.

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}$.

Unsigned, sign-magnitude, and two’s complement 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?

- 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.

- 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$

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$

Hashing, pseudo-random numbers, ciphers.

- 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.

- 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$

- 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}$

- 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.