Алгебра и теория чисел: целочисленная арифметика, простые числа
Описание для плана ;)
Простые числа.
Проверка простоты - за полином.
Факторизация - за экспоненту.
Упоминание RSA.
Вычисления по модулю.
Лемма (a + b) mod c = (a mod c + b mod c) mod c.
Лемма (a * b) mod c = (a mod c * b mod c) mod c.
Задача: a * b mod c, оставаясь в целом типе.
Десятичное умножение в столбик.
Двоичное умножение в столбик.
Идея со сложением нужных из a, 2 a, 4 a, 8 a, ... .
Медленное умножение.
Код на Си и на Паскале.
Задача: a ^ b mod c, оставаясь в целом типе.
Сложение -> умножение - то же, что и умножение -> возведение в степень.
Идея с перемножением нужных из a, a^2, a^4, a^8, ... .
Быстрое возведение в степень.
Код на Си.
Мотивационная задача: проверка числа на простоту.
Периоды a, a^2, a^3, a^4, a^5, ... mod p на примере p = 7.
Малая теорема Ферма.
Функция Эйлера.
Теорема Эйлера - обобщение теоремы Ферма.
Лемма: \phi (m) = m - 1 равносильно тому, что m простое.
Тест Ферма.
Числа Кармайкла (минимальное - 561).
Корни из единицы по модулю m.
Лемма: m простое => корни из единицы только +-1.
Тест Миллера-Рабина.
Матрицы.
Числа Фибоначчи.
Получение вектора (F_{n}, F_{n - 1}) из вектора (F_{n - 1}, F_{n - 2}).
Матрицы и правила умножения матриц.
Умножение матрицы ((1, 1), (1, 0)) на себя несколько раз справа и слева.
Наблюдение за тем, как в матрице получаются числа Фибоначчи.
Одно умножение на матрицу - это переход (n - 1) -> n.
Получение числа Фибоначчи с большим номером по модулю.
Быстрое возведение матрицы в степень.
Последовательность G_{n} = G_{n - 1} + 2 G_{n - 3} и соответствующая матрица.
H_{n} = H_{n - 1} + 2 H_{n - 3}, добавляем + 1, добавляем + n.