diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-10-13 15:43:31 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-10-13 15:44:09 +0400 |
| commit | 037090f1cdc250b0cf52e666f36dde41ea543d77 (patch) | |
| tree | 1c21bf2125b30ba57f4768b22d8939930c2eee1f /report/lab6/lab6.tex | |
| parent | 16b78133e09a00c3947f56c612cfbf5aa13ed6d6 (diff) | |
Добавил отчёты по 3, 4 и 6 лабам
Diffstat (limited to 'report/lab6/lab6.tex')
| -rw-r--r-- | report/lab6/lab6.tex | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/report/lab6/lab6.tex b/report/lab6/lab6.tex new file mode 100644 index 0000000..07f2242 --- /dev/null +++ b/report/lab6/lab6.tex @@ -0,0 +1,74 @@ +\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{{Алгоритмы алгебры и теории чисел}\\{Лабораторная работа №6}} +\author{Гущин Андрей, 431 группа, 1 подгруппа} +\date{\the\year{} г.} + +\begin{document} + +\maketitle + +\section{Задача} + +Осуществить проверку чисел на простоту с помощью теста Соловея"=Штрассена. + +\section{Алгоритм} + +Тест Соловея"=Штрассена опирается на малую теорему Ферма и свойства символа +Якоби: + +Если $n$ --- нечетное составное число, то количество целых чисел $a$, +взаимнопростых с $n$ и меньших $n$, удовлетворяющих сравнению $a^{(n - 1) / 2} +\equiv \left(\frac{a}{n}\right) \pmod{n}$, не превосходит $\frac{n}{2}$, где +$\left(\frac{a}{n}\right)$ --- символ Якоби. + +Алгоритм Соловея"=Штрассена параметризуется количеством раундов $k$. В каждом +раунде случайным образом выбирается число $a < n$. Если $\text{НОД} (a, n) > +1$, то выносится решение, что $n$ составное. Иначе проверяется справедливость +сравнения $\displaystyle a^{(n - 1) / 2}\equiv \left(\frac{a}{n}\right) \pmod +{n}$. Если оно не выполняется, то выносится решение, что $n$ --- составное. Если +это сравнение выполняется, то $a$ является свидетелем простоты числа $n$. Далее +выбирается другое случайное $a$ и процедура повторяется. После нахождения $k$ +свидетелей простоты в $k$ раундах выносится заключение, что $n$ является простым +числом с вероятностью $\displaystyle 1 - 2^{-k}$. + +\section{Реализация} + +Для реализации вычисления символа Якоби необходимо было реализовать вычисление +символа Лежандра, а также использовать некоторый алгоритм факторизации числа. +Для факторизации был выбран и реализован алгоритм Лемана. + +\inputminted[fontsize=\small, breaklines=true, style=emacs, linenos]{rust}{../../lab6/src/main.rs} + +\section{Тестирование} + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{test.png} +\end{figure} + +\end{document} |