\documentclass[a4paper,oneside]{article} \usepackage[utf8]{inputenc} \usepackage[T2A]{fontenc} \usepackage[english,russian]{babel} \usepackage{amsmath} \usepackage{mathtools} \usepackage{amsfonts} \usepackage{enumitem} \usepackage{amsthm} \usepackage{minted} \setminted{fontsize=\small, breaklines=true, style=emacs, linenos} \usepackage{graphicx} \graphicspath{ {./images/} } \usepackage{float} \newtheorem{theorem}{Теорема}[subsection] \newtheorem*{theorem*}{Теорема} % --- Определение --- % \theoremstyle{definition} \newtheorem{definition}{Определение}[subsection] \newtheorem*{definition*}{Определение} % ------------------- % \title{{Алгоритмы алгебры и теории чисел}\\{Лабораторная работа №10}} \author{Гущин Андрей, 431 группа, 1 подгруппа} \date{\the\year{} г.} \begin{document} \maketitle \section{Задание} Осуществить построение большого простого числа с использованием теоремы Поклингтона. \section{Алгоритм} Критерий Поклингтона — детерминированный тест на простоту, разработанный Генри Поклингтоном и Дерриком Генри Лехмером. Критерий Поклингтона позволяет определять, является ли данное число простым. Пусть $n$ — натуральное число. Пусть число $n-1$ имеет простой делитель $q$, причем ${\displaystyle q>{\sqrt {n}}-1}$. Если найдётся такое целое число $a$, что выполняются следующие два условия: \begin{enumerate} \item $a^{n-1} \equiv 1 \pmod n$ \item числа $n$ и $a^{(n-1)/q}-1$ взаимнопросты \end{enumerate} тогда $n$ - простое число. Практическая реализация основана на выборе случайного числа в диапазоне значений от $2^{b - 1} + 1$ до $2^b - 1$ (где $b$ определяет число бит генерируемого простого числа). Далее это число проверяется на наличие небольших простых делителей (простые числа меньше 500), и если таких делителей не найдено, осуществляется проверка с помощью теоремы Поклингтона. Для этого перед запуском программы вводится значение верхнего порога $a$, определяющее, что в рамках проверки на простоту с помощью теоремы Поклингтона будут использоваться целые числа, значение которых не превосходит $a$. Если число проходит тест, значит оно является сгенерированным простым числом. Если же число не проходит тест или у него есть делители среди небольших первых простых чисел, то выбирается другое число из этого диапазона, пока выбранное число не будет проходить тест успешно. \section{Реализация} \inputminted{python}{../../lab10/lab10.py} \section{Тестирование} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{test10.png} \end{figure} \end{document}