Программный курсовой проект 3 курса посвященный реализации библиотеки с алгоритмами, связанными с выявлением простых чисел и разложении составных чисел на простые множители (с использованием длинной арифметики).
Для работы с числами неограниченной длины используется сторонняя библиотека GMPXX на основе библиотеки GMP. Проект собирается c помощьью утилиты make, с генерацией файлов сборки через CMake. Для форматирования кода в проекте используются clang-tidy и clang-format. Требования версий стандарта C++ и утилиты CMake указаны в корневом конфигурационном файле CMakeLists.txt.
Из зависимостей необходимо установить gmp и gmpxx.
-
/contrib -- содержит дополнительные субмодули библиотеки: GoogleTest и GoogleBenchmark.
-
/src -- содержит саму реализованную библиотеку
-
/tests -- содержит тесты корректности с использованием GoogleTest
-
/benchmarks -- содержит тесты производительности и сравнение разных имплементаций с использованием GoogleBenchmark
Вероятностные алгоритмы определения простоты:
- Тест Ферма
- Тест Эйлера - Якоби
- Тест Миллера - Рабина
- Тест Бейли - Вагстаффа - Люка
- Сильный тест Бейли - Вагстаффа - Люка
- Тест V-последовательности Люка
- Тест Бейли — Померанца — Селфриджа — Уогстаффа
- Усиленный тест Бейли — Померанца — Селфриджа — Уогстаффа
Детерменированные алгоритмы определения простоты:
- Тест перебором делителей
- Тест Люка - Лемера
Алгоритмы факторизации:
- Квадратичное решето
Автор проекта: Блинов Илья