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/lab11/lab11.tex | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)
 create mode 100644 report/lab11/lab11.tex

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

diff --git a/report/lab11/lab11.tex b/report/lab11/lab11.tex
new file mode 100644
index 0000000..9f74180
--- /dev/null
+++ b/report/lab11/lab11.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{{Алгоритмы алгебры и теории чисел}\\{Лабораторная работа №11}}
+\author{Гущин Андрей, 431 группа, 1 подгруппа}
+\date{\the\year{} г.}
+
+\begin{document}
+
+\maketitle
+
+\section{Задача}
+Реализовать факторизацию Ферма.
+
+\section{Алгоритм}
+Ферма описал свой метод разложения больших чисел на множители. Он
+представлял собой первое реальное улучшение по сравнению с
+классическим методом попытки найти множитель $n$ путем деления на
+все простые числа, не превосходящие $\sqrt{n}$. В основе схемы
+факторизации Ферма лежит наблюдение, что поиск множителей нечетного
+целого числа $n$ (поскольку степени двойки легко распознаются и
+могут быть удалены в самом начале, нет никаких потерь в
+предположении, что $n$ нечетно) эквивалентен получению интегральных
+решений $x$ и $y$ уравнения $n = x^{2} - y^{2}$.
+
+Если $n$ --- разность двух квадратов, то очевидно, что $n$ можно разложить на
+множители как $n = x^{2}-y^{2} = (x+y)(x-y)$. И наоборот, когда $n$ имеет
+разложение $n = ab$, где $a \geq b \geq 1$, тогда мы можем записать $n =
+(\frac{a+b}{2})^{2}-(\frac{a-b}{2})^{2}$.
+
+Более того, поскольку $n$ считается нечетным целым числом, $a$ и $b$
+сами по себе нечетны и, следовательно, $\frac{a+b}{2}$ и
+$\frac{a-b}{2}$ будут целыми неотрицательными числами.
+
+Поиск возможных $x$ и $y$, удовлетворяющих уравнению $n=x^{2}-y^{2}$ или, что то
+же самое, уравнению $x^{2}-n=y^{2}$, начинают с определения наименьшее целое
+число $k$, для которого $k^{2} \geq n$. Рассмотрим последовательно числа
+$k^{2}-n$, $(k+1)^{2}-n$, $(k+2)^{2}-n$, $(k+3)^{2}-n$, $\ldots$, пока не будет
+найдено значение $m \geq n$, делающее $m^{2}-n$ квадратом. Процесс не может
+продолжаться бесконечно, потому что в конце концов мы придем к $
+(\frac{n+1}{2})^{2} - n = (\frac{n-1}{2})^{2}$ представлению $n$,
+соответствующее тривиальной факторизации $n=n.1$. Если эта точка достигается без
+обнаружения разности квадратов ранее, то $n$ не имеет других делителей, кроме
+$n$ и $1$, и в этом случае оно является простым числом.
+
+
+\section{Реализация}
+\inputminted{python}{../../lab11/lab11.py}
+
+
+\section{Тестирование}
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=0.8\textwidth]{test11.png}
+\end{figure}
+
+\end{document}
-- 
cgit v1.2.3

