summaryrefslogtreecommitdiff
path: root/report/lab9/lab9.tex
diff options
context:
space:
mode:
Diffstat (limited to 'report/lab9/lab9.tex')
-rw-r--r--report/lab9/lab9.tex80
1 files changed, 80 insertions, 0 deletions
diff --git a/report/lab9/lab9.tex b/report/lab9/lab9.tex
new file mode 100644
index 0000000..b47474a
--- /dev/null
+++ b/report/lab9/lab9.tex
@@ -0,0 +1,80 @@
+\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{{Алгоритмы алгебры и теории чисел}\\{Лабораторная работа №9}}
+\author{Гущин Андрей, 431 группа, 1 подгруппа}
+\date{\the\year{} г.}
+
+\begin{document}
+
+\maketitle
+
+\section{Задача}
+
+Осуществить построение большого простого числа с
+использованием критерия Люка.
+
+
+\section{Алгоритм}
+
+В теории чисел тест простоты Люка — это тест простоты натурального числа
+n; для его работы необходимо знать разложение $n-1$ на множители. Для
+простого числа n простые множители числа $n-1$ вместе с некоторым
+основанием a составляют сертификат Пратта, который позволяет подтвердить
+за полиномиальное время, что число n является простым.
+
+Пусть n > 1 — натуральное число. Если существует целое $a$ такое, что
+${\displaystyle 1<a<n}$ и
+\[a^{n-1} \equiv 1 \pmod n\] и для любого простого делителя $q$ числа
+$n-1$
+\[{\displaystyle a^{\frac {n-1}{q}}\not \equiv 1{\pmod {n}}}\] то $n$
+простое.
+
+Если такого числа $a$ не существует, то $n$ — составное число.
+
+Практическая реализация основана на выборе случайного числа в диапазоне значений
+от $2^{b - 1} + 1$ до $2^b - 1$ (где $b$ определяет число бит генерируемого
+простого числа). Далее это число проверяется на наличие небольших простых
+делителей (простые числа меньше 500), и если таких делителей не найдено,
+осуществляется проверка с помощью теста Люка. Если число проходит тест, значит
+оно является сгенерированным простым числом. Если же число не проходит тест или
+у него есть делители среди небольших первых простых чисел, то выбирается другое
+число из этого диапазона, пока выбранное число не будет проходить тест успешно.
+
+
+\section{Реализация}
+\inputminted{python}{../../lab9/lab9.py}
+
+
+\section{Тестирование}
+\begin{figure}[H]
+ \centering
+ \includegraphics[width=0.8\textwidth]{test9.png}
+\end{figure}
+
+
+
+\end{document}