Основы модулярной арифметики

Модулярная арифметика оперирует остатками.

Пусть aa — какое-то целое число. Мы хотим разделить с остатком aa на целое число mm. Разделить с остатком aa на mm — значит найти два таких целых числа cc и rr, что

a=cm+rи при этом 0r<ma = c \cdot m + r \quad\text{и при этом}~ 0 \le r < m

Число cc называется неполным частным, а число rr называется остатком при делении aa на mm.

c=amиr=aamc = \left\lfloor \frac{a}{m} \right\rfloor \quad\text{и}\quad r = a - \left\lfloor \frac{a}{m} \right\rfloor

Для остатка rr такую громоздкую запись r=aa/mr = a - \lfloor a/m \rfloor заменяют обозначением r   ⁣=def   ⁣amodmr \defeq a \bmod m.

Сравнение по модулю

Возьмем множество целых чисел Z\ZZ. Зафиксируем какой-то модуль mm.

Отношение «иметь один остаток при делении на mm» является отношением эквивалентности. Обозначается m\eqmod{m}. То есть, если aa и bb имеют один и тот же остаток при делении на mm, пишут amba \eqmod{m} b или ab(modm)a \equiv b \pmod m.

Действительно, это отношение рефлексивно, так как amaa \eqmod{m} a, симметрично, так как ambbmaa \eqmod{m} b \Leftrightarrow b \eqmod{m} a и транзитивно, так как ambbmcamca \eqmod{m} b \land b \eqmod{m} c \Rightarrow a \eqmod{m} c.

Поскольку m\eqmod{m} — отношение эквивалентности на Z\ZZ, то оно делит множество Z\ZZ на классы эквивалентности [r][r].

[r]   ⁣=def   ⁣{xm+rxZ}[r] \defeq \{ x \cdot m + r \mid \forall\, x \in \ZZ \}

Класс эквивалентности [r][r] содержит все числа, имеющие остаток rr при делении на mm. Эти классы эквивалентности ещё называют вычетами по модулю mm.

Всего таких классов mm: от 00 до m1m-1. Значит, фактормножество

Z/m={[0],[1],[2],,[m2],[m1]}\ZZ \big/ {\eqmod{m}} = \bigl\{ [0], [1], [2], \dotsc, [m-2], [m-1] \bigr\}

Сравнимость по модулю и делимость тесно связаны

ab(modm)    m\(ab)a \equiv b \pmod m \iff m \divides (a - b)

Отсюда выводятся очень важные свойства. Пусть aa и bb(modm)a \equiv a' ~\text{и}~ b \equiv b' \pmod m. Тогда

a+ba+b(modm)иabab(modm)a + b \equiv a' + b' \pmod m \quad\text{и}\quad a \cdot b \equiv a' \cdot b' \pmod m

Более того, для любого многочлена P(x,y)P(x, y)

P(a,b)P(a,b)(modm)P(a, b) \equiv P(a', b') \pmod m

Китайская теорема об остатках

Можно составлять и решать уравнения по модулю, например xr(modm)x \equiv r \pmod m. Такие уравнения называются сравнениями (говорят, соответственно, решать сравнение, система сравнений и так далее).

Решать сравнения гораздо сложнее, чем обычные уравнения, потому что большинство операций у нас урезано. Например, решением тривиального сравнения xr(modm)x \equiv r \pmod m служат все числа вида r+nmr + nm, где nn — любое целое число. А вот сравнение x2rmodpx^2 \equiv r \bmod p уже не решается стандартными методами.

Давайте пока посмотрим на системы тривиальных сравнений. О том, как выглядят все решения систем сравнений говорит китайская теорема об остатках:

Китайская теорема об остатках

Пусть m1,m2,mnm_1, m_2, \dotsc m_n — попарно простые натуральные числа, то есть

mimjдля всех ijm_i \rprime m_j \quad\text{для всех}~ i \neq j

Система из nn модулярных уравнений

{xr1(modm1)xr2(modm2)xrn(modmn)\cases{x \equiv r_1 \pmod{m_1} \\ x \equiv r_2 \pmod{m_2} \\ \vdots \\ x \equiv r_n \pmod{m_n} }

имеет ровно одно решение по модулю m1m2mnm_1 m_2 \dotsm m_n

x=k=1nrkMkMk1x = \sum\limits_{k=1}^n r_k \cdot M_k \cdot M_k^{-1}

где Mk=j=1nmj/mkM_k = \prod\limits_{j=1}^n m_j \Big/ m_k, и Mk1M_k^{-1} — мультипликативно обратный к MkmodmkM_k \bmod m_k в кольце Zmk\ZZ_{m_k}.

Доказательство здесь конструктивное. Точнее, достаточно проверить, что такие xx действительно являются решением системы сравнений.

Подставив x=k=1nrkMkMk1x = \sum\limits_{k=1}^n r_k \cdot M_k \cdot M_k^{-1} в jj-ое сравнение системы, получим, что все члены суммы, кроме rjMjMj1r_j \cdot M_j \cdot M_j^{-1} обнулятся, так как в каждом MkM_k будет множитель mjm_j. А оставшийся член rjMjMj1r_j \cdot M_j \cdot M_j^{-1} по модулю mjm_j даст rjr_j, ведь MjM_j и Mj1M_j^{-1} мультипликативно взаимнообратны в кольце вычетов Zmj\ZZ_{m_j}, и MjMj1=1(modmj)M_j \cdot M_j^{-1} = 1 \pmod {m_j}