Алгебра и теория чисел: целочисленная арифметика, простые числа

Описание для плана ;)
Простые числа.
  Проверка простоты - за полином.
  Факторизация - за экспоненту.
  Упоминание 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.