From 0be2be0a92f992bf8ee9eff701cb19658a1e7544 Mon Sep 17 00:00:00 2001 From: Andrew Guschin 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/images/test11.png | Bin 0 -> 449004 bytes report/lab11/lab11.pdf | Bin 0 -> 483704 bytes report/lab11/lab11.tex | 80 +++++++++++++++++++++++++++++++++++++++++ report/lab11/maker.sh | 35 ++++++++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 report/lab11/images/test11.png create mode 100644 report/lab11/lab11.pdf create mode 100644 report/lab11/lab11.tex create mode 100755 report/lab11/maker.sh (limited to 'report/lab11') diff --git a/report/lab11/images/test11.png b/report/lab11/images/test11.png new file mode 100644 index 0000000..ed4a42f Binary files /dev/null and b/report/lab11/images/test11.png differ diff --git a/report/lab11/lab11.pdf b/report/lab11/lab11.pdf new file mode 100644 index 0000000..c4669a0 Binary files /dev/null and b/report/lab11/lab11.pdf differ 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} diff --git a/report/lab11/maker.sh b/report/lab11/maker.sh new file mode 100755 index 0000000..e847acf --- /dev/null +++ b/report/lab11/maker.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +watch() { + [ -z "$1" ] && echo "Необходимо указать название основного документа" && help + set -o xtrace + latexmk -pdf -f -shell-escape -interaction=nonstopmode -pvc $1 +} + +doc() { + [ -z "$1" ] && echo "Необходимо указать название основного документа" && help + set -o xtrace + latexmk -pdf -f -shell-escape -interaction=nonstopmode $1 +} + +clean() { + set -o xtrace + rm -rf _minted-* + find . -name "*.aux" -exec rm {} \; + rm -f *.dvi *.fdb_latexmk *.fls *.log *.out *.toc +} + +help() { + echo "Использование:" + echo "./maker.sh watch .tex -> Запуск процесса, пересобирающего документ при изменениях" + echo "./maker.sh doc .tex -> Пересобрать документ" + echo "./maker.sh clean -> Удаление сгенерированных файлов" + exit 1 +} + +case "$1" in + watch) watch $2 ;; + doc) doc $2 ;; + clean) clean ;; + *) help ;; +esac -- cgit v1.2.3