Мехмат, семестр 4
Программирование

Самостоятельная работа состоит в решении задач по темам, которые обсуждаются в лекциях. По каждой теме нужно решить одну задачу из предлагаемого списка. Номер задачи равен номеру студента в журнале по модулю n, где n — число задач по данной теме.


Весенний семестр 2024-25

  1. Компьютерные сети. Обзор, классификация. Понятие протокола. Уровневая модель описания сетевых протоколов. Примеры протоколов физического уровня (CSMA/CD, Ethernet, Token Ring, DQDB). Стек интернетовских протоколов TCP/IP. Программирование с использованием интерфейса BSDI-сокетов.
  2. Параллельное программирование: нити (потоки, легковесные процессы) и их синхронизация.

Элементы теории чисел

Кодирование с открытым ключом и элементы теории чисел

Содержание лекции:

Презентация: теория чисел в криптографии

Файл numberth.py:
реализация базовых алгоритмов теории чисел на Python

  • Вычисление наибольшего общего делителя двух целых чисел
  • Расширенный алгоритм Евклида — представление наибольшего общего делителя d целых чисел m, n в виде линейной комбинации этих чисел с целыми коэффициентами:

    d = u·m + v·n

  • Вычисление обратного элемента в кольце вычетов по модулю m
  • Алгоритм быстрого воззведения в степень в кольце вычетов по модулю m

Список задач

  1. Реализовать вероятностный тест простоты Миллера-Рабина.
  2. Реализовать алгоритм для Китайской теоремы об остатках.
  3. Факторизовать целое число с помощью ρ-алгоритма Полларда.
  4. Факторизовать целое число с помощью p-1-алгоритма Полларда.
  5. Вычислить квадратный корень из x в поле Zp (p — простое число), т.е. найти r такое, что r2x (mod p).
  • Необязательная задача (ее можно выбрать вместо любой из перечисленных выше задач): факторизовать целое число с помощью алгоритма Ленстра на эллиптических кривых.