Теория чисел и модульная арифметика: задачи с пошаговыми решениями

Бесплатные задачи по теме Теория чисел и модульная арифметика с рисунками, подсказками и подробными решениями. Каждый раз новые значения, трёх уровней: НОД и остатки, обратные элементы и сравнения, степени по модулю и RSA.

Бесплатная задачаЛёгкая
012345678910mod 11

Найдите 942 mod 11, остаток r, для которого 0 ≤ r < 11.

a = 942n = 11

Точный ответ: целое число, без округления.

Следующая задача →

Что вы отрабатываете

  1. ЛёгкаяНОД и остатки
  2. Средняяобратные элементы и сравнения
  3. Сложнаястепени по модулю и RSA

Как решать задачи по теме «Теория чисел и модульная арифметика»

  1. Сначала приведите каждое число по модулю n; остатки лежат от 0 до n − 1.
  2. Для НОД делите с остатком по алгоритму Евклида; последний ненулевой остаток и есть НОД.
  3. Для обратного элемента запустите расширенный алгоритм и возьмите коэффициент при a; если он отрицательный, прибавьте n.
  4. Решайте a·x ≡ b умножением на a⁻¹; два сравнения объединяйте, записывая x = r₁ + m₁k.
  5. Для степеней запишите показатель в двоичном виде и многократно возводите в квадрат; в RSA d = e⁻¹ mod φ(n), где φ(n) = (p − 1)(q − 1).

Типичные ошибки

  • Давать отрицательный остаток для отрицательного числа.
  • Останавливать алгоритм Евклида на первом остатке.
  • Оставлять обратный элемент отрицательным вместо прибавления n.
  • Брать показатель RSA d по модулю n, а не по модулю φ(n).
  • Приводить показатель по модулю p, а не p − 1, в теореме Ферма.

Основные формулы

Деление с остатком
a = q·n + r, 0 ≤ r < n
Евклид
gcd(a, b) = gcd(b, a mod b)
Наименьшее общее кратное
lcm(a, b) = a·b/gcd(a, b)
Обратная матрица
a·a⁻¹ ≡ 1 (mod n), gcd(a, n) = 1
Линейное сравнение
a·x ≡ b → x ≡ a⁻¹·b (mod n)
Функция Эйлера
φ(n) = n·∏(1 − 1/p), φ(pᵏ) = pᵏ − pᵏ⁻¹
Ферма
aᵖ⁻¹ ≡ 1 (mod p)
RSA
n = pq, φ = (p − 1)(q − 1), d = e⁻¹ mod φ, c = mᵉ mod n, m = cᵈ mod n

Изучите тему «Теория чисел и модульная арифметика» с нуля

1Остатки и сравнения

Деление a на n даёт частное q и остаток r: a = q·n + r, где 0 ≤ r < n. Остаток записывается как a mod n. Для отрицательного числа q тоже отрицательно: −3 = −1·7 + 4, поэтому −3 mod 7 = 4.

Два числа сравнимы по модулю n, a ≡ b (mod n), если они дают одинаковый остаток, то есть если n делит a − b.

0123456mod 7−3 ≡ 411 ≡ 4

Остатки можно приводить на каждом шаге, что сохраняет числа небольшими:

(a + b) mod n = ((a mod n) + (b mod n)) mod n, и так же для a·b

Например, 47·58 mod 9: 47 ≡ 2 и 58 ≡ 4, поэтому 47·58 ≡ 8 (mod 9).

Самопроверка Чему равно −17 mod 5?
  1. 2
  2. 3
  3. −2
  4. −3

Ответ: 3. −17 = −4·5 + 3, поэтому остаток равен 3. Ответ 2 — это 17 mod 5; остаток никогда не бывает отрицательным.

2Алгоритм Евклида

Наибольший общий делитель НОД(a, b) — это наибольшее число, которое делит оба. Алгоритм Евклида использует НОД(a, b) = НОД(b, a mod b):

  1. Разделите: a = q·b + r.
  2. Замените (a, b) на (b, r).
  3. Повторяйте, пока остаток не станет равен 0. Последний ненулевой остаток и есть НОД.
252 = 2·105 + 42, 105 = 2·42 + 21, 42 = 2·21 + 0 → gcd = 21

Из него следует наименьшее общее кратное: НОК(a, b) = a·b / НОД(a, b).

Самопроверка Чему равен НОД(84, 36)?
  1. 12
  2. 252
  3. 4
  4. 6

Ответ: 12. 84 = 2·36 + 12 и 36 = 3·12 + 0, поэтому НОД равен 12. 252 — это наименьшее общее кратное, 84·36/12.

3Обратные элементы и расширенный алгоритм

Обратный к a по модулю n — это число x, для которого a·x ≡ 1 (mod n). Он существует тогда и только тогда, когда НОД(a, n) = 1.

Расширенный алгоритм Евклида применяет Евклида к (n, a) и сохраняет для каждого остатка коэффициент t, так что каждый остаток r ≡ t·a (mod n). Начните с t = 0 для n и t = 1 для a; каждое новое t равно t на две строки выше минус q, умноженное на t на одну строку выше. Когда появляется остаток 1, его t и есть обратный элемент.

Имея обратный элемент, сравнение a·x ≡ b (mod n) решается как x ≡ a⁻¹·b. Если d = НОД(a, n) больше 1, то при d, делящем b, решений d, а иначе решений нет.

Два сравнения со взаимно простыми модулями, x ≡ r₁ (mod m₁) и x ≡ r₂ (mod m₂), имеют ровно одно решение по модулю m₁·m₂ (китайская теорема об остатках). Запишите x = r₁ + m₁k и решите относительно k.

Разобранный пример

Найдите обратный к 7 по модулю 40.

1

Алгоритм Евклида для (40, 7)

40 = 5·7 + 5, 7 = 1·5 + 2, 5 = 2·2 + 1
2

Отслеживайте коэффициент t

t(40) = 0, t(7) = 1.

t(5) = 0 − 5·1 = −5, t(2) = 1 − 1·(−5) = 6, t(1) = −5 − 2·6 = −17
3

Сделайте его положительным

1 ≡ −17·7 (mod 40), а −17 + 40 = 23.

4

Проверка

7·23 = 161 = 4·40 + 1
Ответ

Обратный равен 7⁻¹ ≡ 23 (mod 40).

4Степени по модулю и RSA

Многократное возведение в квадрат быстро вычисляет aᵏ mod n: запишите k в двоичном виде, найдите a, a², a⁴, a⁸, … по модулю n, возводя в квадрат и приводя, и перемножьте те степени, чей бит равен 1.

Малая теорема Ферма: для простого p, не делящего a, aᵖ⁻¹ ≡ 1 (mod p). Поэтому показатель можно приводить по модулю p − 1.

RSA строит ключ из двух простых чисел p и q:

  1. n = p·q и φ(n) = (p − 1)(q − 1).
  2. Выберите e с НОД(e, φ(n)) = 1; (n, e) — открытый ключ.
  3. Вычислите d = e⁻¹ mod φ(n): это закрытый ключ.
  4. Шифрование c = mᵉ mod n; расшифровка m = cᵈ mod n.

Функция Эйлера φ(n) считает числа от 1 до n, взаимно простые с n: φ(p) = p − 1 для простого p, φ(pᵏ) = pᵏ − pᵏ⁻¹, и φ мультипликативна для взаимно простых множителей.

Самопроверка В ключе RSA p = 5, q = 11 и e = 3. Чему равно d?
  1. 13
  2. 27
  3. 37
  4. 3

Ответ: 27. φ(n) = 4·10 = 40, а 3·27 = 81 = 2·40 + 1, поэтому d = 27. Обратный к 3 по модулю n = 55 был бы равен 37, но d берётся по модулю φ(n).

5Типичные ошибки

  • Давать отрицательный остаток для отрицательного числа: −17 mod 5 равно 3, а не −2.
  • Останавливать алгоритм Евклида на первом остатке вместо последнего ненулевого.
  • Забывать прибавить n к отрицательному коэффициенту из расширенного алгоритма.
  • Вычислять показатель RSA d по модулю n вместо модуля φ(n).
  • Приводить показатель по модулю p, а не p − 1, в теореме Ферма.

6Как выглядят экзаменационные задачи

  • Лёгкий: НОД и остатки. Вы применяете алгоритм Евклида для НОД или НОК, находите остатки отрицательных чисел и приводите суммы и произведения по модулю n.
  • Средний: обратные элементы и сравнения. Вы находите обратные по модулю с помощью расширенного алгоритма, решаете линейные сравнения, объединяете два сравнения по китайской теореме об остатках и вычисляете функцию Эйлера φ(n).
  • Сложный: степени по модулю и RSA. Вы используете многократное возведение в квадрат и теорему Ферма, решаете сравнения с несколькими решениями, находите закрытые показатели RSA, шифртексты и расшифрованные сообщения.

Изучайте шаг за шагом в приложенииИзучайте шаг за шагом в приложении

Разобранные примеры

Пример 1Лёгкая

Найдите (914·953) mod 11, не перемножая большие числа: сначала приведите.

n = 11

Найти: (914·953) mod 11

Показать подсказки
  1. (x·y) mod n = ((x mod n)·(y mod n)) mod n, и то же верно для сумм.
  2. 914 mod 11 = 1, 953 mod 11 = 7.
  3. Приведите произведение остатков по модулю 11.
Показать ответ и пошаговое решение

Делимость и остатки: a mod n — это остаток r, для которого 0 ≤ r < n и a = q·n + r, в том числе и при отрицательном a. Алгоритм Евклида находит НОД(a, b), повторяя a = q·b + r и заменяя (a, b) на (b, r); последний ненулевой остаток и есть НОД. Затем НОК(a, b) = a·b/НОД(a, b). Остатки можно приводить на каждом шаге: (a + b) mod n и (a·b) mod n зависят только от a mod n и b mod n.

Приведите каждое число

914 ≡ 1, 953 ≡ 7 (mod 11)

Объедините

1·7 = 7 ≡ 7 (mod 11)

Ответ

(914·953) mod 11 = 7
Пример 2Средняя

Найдите функцию Эйлера φ(637), число целых чисел от 1 до 637, взаимно простых с 637.

n = 637 = 72·13

Найти: φ(637)

Показать подсказки
  1. Разложите n на простые множители: 637 = 72·13.
  2. φ мультипликативна для взаимно простых множителей, и φ(pᵏ) = pᵏ − pᵏ⁻¹.
  3. φ(n) = n·∏(1 − 1/p).
Показать ответ и пошаговое решение

Обратные элементы и сравнения: у a есть обратный по модулю n ровно тогда, когда НОД(a, n) = 1. Расширенный алгоритм Евклида записывает 1 = s·n + t·a, откуда a⁻¹ ≡ t (mod n). Сравнение a·x ≡ b (mod n) при НОД(a, n) = 1 имеет решение x ≡ a⁻¹·b. Два сравнения x ≡ r₁ (mod m₁) и x ≡ r₂ (mod m₂) со взаимно простыми модулями имеют одно решение по модулю m₁·m₂ (китайская теорема об остатках). Функция Эйлера φ(n) считает числа от 1 до n, взаимно простые с n: φ(n) = n·∏(1 − 1/p).

Простые множители

637 = 72·13

Функция Эйлера

φ(637) = φ(49)·φ(13) = 42·12 = 504

Ответ

φ(637) = 504
Пример 3Сложная
mc = me​ mod n225m = cd​ mod n?(n, e) = (481, 23)d

В ключе RSA p = 13, q = 37 и e = 23. Расшифруйте шифртекст c = 225: найдите сообщение m.

p = 13q = 37e = 23c = 225

Найти: m

Показать подсказки
  1. n = 481, φ(n) = 432.
  2. d = e⁻¹ mod φ(n) = 263.
  3. m = cd mod n = 225263 mod 481: используйте многократное возведение в квадрат.
Показать ответ и пошаговое решение

Степени по модулю и RSA: вычисляйте aᵏ mod n многократным возведением в квадрат: запишите k в двоичном виде, возводите в квадрат, приводите по модулю после каждого шага и перемножайте те степени, чей бит равен 1. Ферма: aᵖ⁻¹ ≡ 1 (mod p) для простого p, не делящего a, поэтому показатель можно приводить по модулю p − 1. RSA: выберите простые p и q, n = p·q и φ(n) = (p − 1)(q − 1); открытый показатель e взаимно прост с φ(n), а закрытый показатель d = e⁻¹ mod φ(n). Шифруйте как c = mᵉ mod n и расшифровывайте как m = cᵈ mod n.

Закрытый показатель

n = 481, φ(n) = 432
d = 23−1 mod 432 = 263

Расшифровка многократным возведением в квадрат

263 = 256 + 4 + 2 + 1
2251 ≡ 225 (mod 481)
2252 ≡ 120 (mod 481)
2254 ≡ 451 (mod 481)
2258 ≡ 419 (mod 481)
22516 ≡ 477 (mod 481)
22532 ≡ 16 (mod 481)
22564 ≡ 256 (mod 481)
225128 ≡ 120 (mod 481)
225256 ≡ 451 (mod 481)
225263 ≡ 225·120·451·451 ≡ 361 (mod 481)

Сообщение

m = 361
проверка: 36123 mod 481 = 225

Ответ

m = 361

Вопросы и ответы

Теория чисел и модульная арифметика: что это?

Деление a на n даёт частное q и остаток r: a = q·n + r, где 0 ≤ r < n. Остаток записывается как a mod n. Для отрицательного числа q тоже отрицательно: −3 = −1·7 + 4, поэтому −3 mod 7 = 4.

Два числа сравнимы по модулю n, a ≡ b (mod n), если они дают одинаковый остаток, то есть если n делит a − b.

Теория чисел и модульная арифметика: как решать задачи шаг за шагом?
  1. Сначала приведите каждое число по модулю n; остатки лежат от 0 до n − 1.
  2. Для НОД делите с остатком по алгоритму Евклида; последний ненулевой остаток и есть НОД.
  3. Для обратного элемента запустите расширенный алгоритм и возьмите коэффициент при a; если он отрицательный, прибавьте n.
  4. Решайте a·x ≡ b умножением на a⁻¹; два сравнения объединяйте, записывая x = r₁ + m₁k.
  5. Для степеней запишите показатель в двоичном виде и многократно возводите в квадрат; в RSA d = e⁻¹ mod φ(n), где φ(n) = (p − 1)(q − 1).
Теория чисел и модульная арифметика: какие ошибки самые частые?
  • Давать отрицательный остаток для отрицательного числа.
  • Останавливать алгоритм Евклида на первом остатке.
  • Оставлять обратный элемент отрицательным вместо прибавления n.
  • Брать показатель RSA d по модулю n, а не по модулю φ(n).
  • Приводить показатель по модулю p, а не p − 1, в теореме Ферма.
Теория чисел и модульная арифметика: что вы тренируете?
  • Лёгкая: НОД и остатки
  • Средняя: обратные элементы и сравнения
  • Сложная: степени по модулю и RSA

В каждой задаче новые значения, поэтому вы учите метод, а не ответ. Застряли? Сначала откройте небольшую подсказку, а полное объяснение — только когда оно понадобится.

Как проходят занятия

  • В каждой задаче новые значения, поэтому вы учите метод, а не ответ.
  • Застряли? Сначала откройте небольшую подсказку, а полное объяснение — только когда оно понадобится.
  • Ваш прогресс, ошибки и сохранённые задачи остаются, поэтому перед экзаменом вы сможете всё повторить.

Курсы с этой темой

Другие темы: Математика и статистика

Лист заданий для печати