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 | |
| parent | 16b78133e09a00c3947f56c612cfbf5aa13ed6d6 (diff) | |
Добавил отчёты по 3, 4 и 6 лабам
| -rw-r--r-- | .gitignore | 15 | ||||
| -rw-r--r-- | report/lab3/Makefile | 12 | ||||
| -rw-r--r-- | report/lab3/images/test.png | bin | 0 -> 416034 bytes | |||
| -rw-r--r-- | report/lab3/lab3.pdf | bin | 0 -> 427523 bytes | |||
| -rw-r--r-- | report/lab3/lab3.tex | 57 | ||||
| -rw-r--r-- | report/lab4/Makefile | 12 | ||||
| -rw-r--r-- | report/lab4/images/test.png | bin | 0 -> 564553 bytes | |||
| -rw-r--r-- | report/lab4/lab4.pdf | bin | 0 -> 540496 bytes | |||
| -rw-r--r-- | report/lab4/lab4.tex | 60 | ||||
| -rw-r--r-- | report/lab6/Makefile | 12 | ||||
| -rw-r--r-- | report/lab6/images/test.png | bin | 0 -> 467881 bytes | |||
| -rw-r--r-- | report/lab6/lab6.pdf | bin | 0 -> 510419 bytes | |||
| -rw-r--r-- | report/lab6/lab6.tex | 74 |
13 files changed, 242 insertions, 0 deletions
@@ -1,2 +1,17 @@ .* lab*/target + +*.dvi +*.aux +*.fls +*.log +*.out +*.fdb_latexmk +*.gz +*.thm +*.toc +*.bbl +*.blg +*.md +.DS_Store +_minted* diff --git a/report/lab3/Makefile b/report/lab3/Makefile new file mode 100644 index 0000000..16f6324 --- /dev/null +++ b/report/lab3/Makefile @@ -0,0 +1,12 @@ +.PHONY: clean all + +all: + @echo "Использование:" + @echo "make entr -> Запуск entr, пересобирающий документ пи изменениях" + @echo "make clean -> Удаление сгенерированных файлов" + +entr: + sh -c "echo *.tex | entr latexmk -pdf -f -shell-escape lab*.tex" + +clean: + rm -rf _minted-* *.aux *.dvi *.fdb_latexmk *.fls *.log diff --git a/report/lab3/images/test.png b/report/lab3/images/test.png Binary files differnew file mode 100644 index 0000000..a690bc2 --- /dev/null +++ b/report/lab3/images/test.png diff --git a/report/lab3/lab3.pdf b/report/lab3/lab3.pdf Binary files differnew file mode 100644 index 0000000..8e721de --- /dev/null +++ b/report/lab3/lab3.pdf diff --git a/report/lab3/lab3.tex b/report/lab3/lab3.tex new file mode 100644 index 0000000..655ad5b --- /dev/null +++ b/report/lab3/lab3.tex @@ -0,0 +1,57 @@ +\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} +\usepackage{graphicx} +\usepackage{float} +\graphicspath{ {./images/} } + +\newtheorem{theorem}{Теорема}[subsection] +\newtheorem*{theorem*}{Теорема} + +% --- Определение --- % +\theoremstyle{definition} +\newtheorem{definition}{Определение}[subsection] +\newtheorem*{definition*}{Определение} +% ------------------- % + +\date{} + + +\title{Алгоритмы алгебры и теории чисел, Лабораторная №3} +\author{Гущин Андрей, 431 группа, 1 подгруппа} + +\begin{document} + +\maketitle + +\section{Задача} + +Осуществить проверку чисел на простоту с помощью критерия Вильсона. + +\section{Алгоритм} + +Теорема Вильсона утверждает, что если $p$ --- простое число, то число +$(p - 1)! + 1$ делится на $p$. Справедливо и обратное: если +$(p - 1)! + 1$ делится на $p$, то $p$ --- простое число. + +\section{Реализация} + +\inputminted[fontsize=\small, breaklines=true, style=emacs, linenos]{rust}{../../lab3/src/main.rs} + +\section{Тестирование} + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{test.png} +\end{figure} + +\end{document} diff --git a/report/lab4/Makefile b/report/lab4/Makefile new file mode 100644 index 0000000..16f6324 --- /dev/null +++ b/report/lab4/Makefile @@ -0,0 +1,12 @@ +.PHONY: clean all + +all: + @echo "Использование:" + @echo "make entr -> Запуск entr, пересобирающий документ пи изменениях" + @echo "make clean -> Удаление сгенерированных файлов" + +entr: + sh -c "echo *.tex | entr latexmk -pdf -f -shell-escape lab*.tex" + +clean: + rm -rf _minted-* *.aux *.dvi *.fdb_latexmk *.fls *.log diff --git a/report/lab4/images/test.png b/report/lab4/images/test.png Binary files differnew file mode 100644 index 0000000..4c71f3b --- /dev/null +++ b/report/lab4/images/test.png diff --git a/report/lab4/lab4.pdf b/report/lab4/lab4.pdf Binary files differnew file mode 100644 index 0000000..db55673 --- /dev/null +++ b/report/lab4/lab4.pdf diff --git a/report/lab4/lab4.tex b/report/lab4/lab4.tex new file mode 100644 index 0000000..4dc77d7 --- /dev/null +++ b/report/lab4/lab4.tex @@ -0,0 +1,60 @@ +\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} +\usepackage{graphicx} +\usepackage{float} +\graphicspath{ {./images/} } + +\newtheorem{theorem}{Теорема}[subsection] +\newtheorem*{theorem*}{Теорема} + +% --- Определение --- % +\theoremstyle{definition} +\newtheorem{definition}{Определение}[subsection] +\newtheorem*{definition*}{Определение} +% ------------------- % + +\date{} + + +\title{Алгоритмы алгебры и теории чисел, Лабораторная №4} +\author{Гущин Андрей, 431 группа, 1 подгруппа} + +\begin{document} + +\maketitle + +\section{Задача} + +Осуществить проверку чисел на простоту с помощью теста на основе малой теоремы +Ферма. + +\section{Алгоритм} + +Малая теорема Ферма утверждает, что если $p$ --- простое число и $a$ --- +любое целое число не делящееся на $p$, то $a^{p - 1} - 1$ делится на $p$. + +\section{Реализация} + +\inputminted[fontsize=\small, breaklines=true, style=emacs, linenos]{rust}{../../lab4/src/main.rs} + +\section{Тестирование} + +С помощью этого теста можно проверять даже большие числа, например число +Мерсена с порядком 2281. + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{test.png} +\end{figure} + +\end{document} diff --git a/report/lab6/Makefile b/report/lab6/Makefile new file mode 100644 index 0000000..16f6324 --- /dev/null +++ b/report/lab6/Makefile @@ -0,0 +1,12 @@ +.PHONY: clean all + +all: + @echo "Использование:" + @echo "make entr -> Запуск entr, пересобирающий документ пи изменениях" + @echo "make clean -> Удаление сгенерированных файлов" + +entr: + sh -c "echo *.tex | entr latexmk -pdf -f -shell-escape lab*.tex" + +clean: + rm -rf _minted-* *.aux *.dvi *.fdb_latexmk *.fls *.log diff --git a/report/lab6/images/test.png b/report/lab6/images/test.png Binary files differnew file mode 100644 index 0000000..15a3b58 --- /dev/null +++ b/report/lab6/images/test.png diff --git a/report/lab6/lab6.pdf b/report/lab6/lab6.pdf Binary files differnew file mode 100644 index 0000000..71dc70d --- /dev/null +++ b/report/lab6/lab6.pdf 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} |