Теория чисел и модульная арифметика: задачи с пошаговыми решениями
Бесплатные задачи по теме Теория чисел и модульная арифметика с рисунками, подсказками и подробными решениями. Каждый раз новые значения, трёх уровней: НОД и остатки, обратные элементы и сравнения, степени по модулю и RSA.
Бесплатная задачаЛёгкая
Найдите 942 mod 11, остаток r, для которого 0 ≤ r < 11.
Как решать задачи по теме «Теория чисел и модульная арифметика»
Сначала приведите каждое число по модулю n; остатки лежат от 0 до n − 1.
Для НОД делите с остатком по алгоритму Евклида; последний ненулевой остаток и есть НОД.
Для обратного элемента запустите расширенный алгоритм и возьмите коэффициент при a; если он отрицательный, прибавьте n.
Решайте a·x ≡ b умножением на a⁻¹; два сравнения объединяйте, записывая x = r₁ + m₁k.
Для степеней запишите показатель в двоичном виде и многократно возводите в квадрат; в 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.
Остатки можно приводить на каждом шаге, что сохраняет числа небольшими:
(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?
2
3
−2
−3
Ответ: 3. −17 = −4·5 + 3, поэтому остаток равен 3. Ответ 2 — это 17 mod 5; остаток никогда не бывает отрицательным.
2Алгоритм Евклида
Наибольший общий делитель НОД(a, b) — это наибольшее число, которое делит оба. Алгоритм Евклида использует НОД(a, b) = НОД(b, a mod b):
Разделите: a = q·b + r.
Замените (a, b) на (b, r).
Повторяйте, пока остаток не станет равен 0. Последний ненулевой остаток и есть НОД.
Из него следует наименьшее общее кратное: НОК(a, b) = a·b / НОД(a, b).
Самопроверка Чему равен НОД(84, 36)?
12
252
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.
Многократное возведение в квадрат быстро вычисляет aᵏ mod n: запишите k в двоичном виде, найдите a, a², a⁴, a⁸, … по модулю n, возводя в квадрат и приводя, и перемножьте те степени, чей бит равен 1.
Малая теорема Ферма: для простого p, не делящего a, aᵖ⁻¹ ≡ 1 (mod p). Поэтому показатель можно приводить по модулю p − 1.
RSA строит ключ из двух простых чисел p и q:
n = p·q и φ(n) = (p − 1)(q − 1).
Выберите e с НОД(e, φ(n)) = 1; (n, e) — открытый ключ.
Вычислите d = e⁻¹ mod φ(n): это закрытый ключ.
Шифрование 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?
13
27
37
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, шифртексты и расшифрованные сообщения.
Найдите (914·953) mod 11, не перемножая большие числа: сначала приведите.
n = 11
Найти: (914·953) mod 11
Показать подсказки
(x·y) mod n = ((x mod n)·(y mod n)) mod n, и то же верно для сумм.
914 mod 11 = 1, 953 mod 11 = 7.
Приведите произведение остатков по модулю 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)
Показать подсказки
Разложите n на простые множители: 637 = 72·13.
φ мультипликативна для взаимно простых множителей, и φ(pᵏ) = pᵏ − pᵏ⁻¹.
φ(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Сложная
В ключе RSA p = 13, q = 37 и e = 23. Расшифруйте шифртекст c = 225: найдите сообщение m.
p = 13q = 37e = 23c = 225
Найти: m
Показать подсказки
n = 481, φ(n) = 432.
d = e⁻¹ mod φ(n) = 263.
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.
Теория чисел и модульная арифметика: как решать задачи шаг за шагом?
Сначала приведите каждое число по модулю n; остатки лежат от 0 до n − 1.
Для НОД делите с остатком по алгоритму Евклида; последний ненулевой остаток и есть НОД.
Для обратного элемента запустите расширенный алгоритм и возьмите коэффициент при a; если он отрицательный, прибавьте n.
Решайте a·x ≡ b умножением на a⁻¹; два сравнения объединяйте, записывая x = r₁ + m₁k.
Для степеней запишите показатель в двоичном виде и многократно возводите в квадрат; в RSA d = e⁻¹ mod φ(n), где φ(n) = (p − 1)(q − 1).
Теория чисел и модульная арифметика: какие ошибки самые частые?
Давать отрицательный остаток для отрицательного числа.
Останавливать алгоритм Евклида на первом остатке.
Оставлять обратный элемент отрицательным вместо прибавления n.
Брать показатель RSA d по модулю n, а не по модулю φ(n).
Приводить показатель по модулю p, а не p − 1, в теореме Ферма.
Теория чисел и модульная арифметика: что вы тренируете?
Лёгкая: НОД и остатки
Средняя: обратные элементы и сравнения
Сложная: степени по модулю и RSA
В каждой задаче новые значения, поэтому вы учите метод, а не ответ. Застряли? Сначала откройте небольшую подсказку, а полное объяснение — только когда оно понадобится.
Как проходят занятия
В каждой задаче новые значения, поэтому вы учите метод, а не ответ.
Застряли? Сначала откройте небольшую подсказку, а полное объяснение — только когда оно понадобится.
Ваш прогресс, ошибки и сохранённые задачи остаются, поэтому перед экзаменом вы сможете всё повторить.