From 0be2be0a92f992bf8ee9eff701cb19658a1e7544 Mon Sep 17 00:00:00 2001
From: Andrew Guschin <guschin.drew@gmail.com>
Date: Thu, 29 Dec 2022 15:20:32 +0400
Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B?=
 =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D1=8B=208-15?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 report/lab9/lab9.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)
 create mode 100644 report/lab9/lab9.tex

(limited to 'report/lab9/lab9.tex')

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}
-- 
cgit v1.2.3

