Основное содержание
Информатика
Course: Информатика > Модуль 2
Урок 5: Модульная арифметика- Что такое модульная арифметика?
- Оператор модуля
- Испытание по модульной арифметике
- Равенство по модулю
- Отношение равенства
- Отношения эквивалентности
- Теорема о делимости целых чисел с остатком
- Сложение и вычитание по модулю
- Сложение по модулю
- Испытание по теме «Модульная арифметика» (сложение и вычитание)
- Умножение по модулю
- Умножение по модулю
- Возведение в степень по модулю
- Быстрое возведение в степень по модулю
- Быстрое возведение в степень по модулю
- Обратное число по модулю
- Алгоритм Евклида
Возведение в степень по модулю
Наконец, давайте рассмотрим экспоненциальное свойство.
A^B mod C = ( (A mod C)^B ) mod C
Часто нам бывает нужно вычислить A^B mod C для больших значений B.
К сожалению, A^B очень быстро растёт даже для довольно маленьких значений B.
К сожалению, A^B очень быстро растёт даже для довольно маленьких значений B.
Например:
2^90 = 1 237 940 039 290 000 000 000 000 000
7^256 = 2 213 595 400 050 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 83 794 038 078 300 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 721 264 246 243 000 000 000 000 000
А для больших значений калькуляторы и компьютеры могут выдать ошибку переполнения.
Даже если мы не получили ошибку, вычисление модуля таких огромных чисел может занять очень много времени.
Даже если мы не получили ошибку, вычисление модуля таких огромных чисел может занять очень много времени.
Что сделать, чтобы уменьшить использующиеся числа и ускорить вычисления?
Представьте, что нам нужно вычислить 2^90 mod 13, но наш калькулятор не умеет работать с числами, больше чем 2^50.
Тут вступает в дело простая стратегия разделяй и властвуй:
разбей на меньшие части
правила возведения в степень
2^90 = 2^50 * 2^40
mod C
каждая часть
2^50 mod 13 = 1125899906842624 mod 13 = 4
2^40 mod 13 = 1099511627776 mod 13 = 3
2^40 mod 13 = 1099511627776 mod 13 = 3
воспользуйся свойствами умножения
собери части
2^90 mod 13 = (2^50 * 2^40) mod 13
2^90 mod 13 = (2^50 mod 13 * 2^40 mod 13) mod 13
2^90 mod 13 = ( 4 * 3 ) mod 13
2^90 mod 13 = 12 mod 13
2^90 mod 13 = 12
2^90 mod 13 = (2^50 mod 13 * 2^40 mod 13) mod 13
2^90 mod 13 = ( 4 * 3 ) mod 13
2^90 mod 13 = 12 mod 13
2^90 mod 13 = 12
Как быстро вычислить A^B mod C, если B представляет собой степень 2?
Как вычислить 7^256 mod 13 при помощи калькулятора, который работает только с числами, меньшими чем 7^10?
Можно разбить 7^256 на 25 частей по 7^10 и 1 часть по 7^6, но это не самое лучшее решение.
Есть способ лучше…
Хотите присоединиться к обсуждению?
Пока нет ни одной записи.