<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B1%D0%BE%D1%80_%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9</id>
	<title>Перебор делителей - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B1%D0%BE%D1%80_%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B1%D0%BE%D1%80_%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9&amp;action=history"/>
	<updated>2026-07-18T09:44:35Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B1%D0%BE%D1%80_%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9&amp;diff=46165&amp;oldid=prev</id>
		<title>94.19.10.96: /* Описание алгоритма */ Если рассмотреть тройку чисел (1, 2, 3), которая подходит под описание &quot;(n-1, n, n+1), где n - простое&quot;, то утверждение дальше (&quot;Так как n — простое, то слева и справа от него будут стоять числа, кратные двум&quot;) неверно, так как 1 и 3 не кратны двум.</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B1%D0%BE%D1%80_%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9&amp;diff=46165&amp;oldid=prev"/>
		<updated>2025-12-05T20:00:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Описание алгоритма: &lt;/span&gt; Если рассмотреть тройку чисел (1, 2, 3), которая подходит под описание &amp;quot;(n-1, n, n+1), где n - простое&amp;quot;, то утверждение дальше (&amp;quot;Так как n — простое, то слева и справа от него будут стоять числа, кратные двум&amp;quot;) неверно, так как 1 и 3 не кратны двум.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Значения|Перебор}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Перебор делителей&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;пробное деление&amp;#039;&amp;#039;&amp;#039;) — алгоритм [[факторизация|факторизации]] или [[тест простоты|тестирования простоты]] числа путём [[полный перебор|полного перебора]] всех возможных потенциальных [[делитель|делителей]].&lt;br /&gt;
&lt;br /&gt;
== Описание алгоритма ==&lt;br /&gt;
[[Файл:Trial division.jpg|thumb|Алгоритм «Перебор делителей»]]&lt;br /&gt;
Обычно перебор делителей заключается в переборе всех [[целое число|целых]] (как вариант: [[простое число|простых]]) чисел от 2 до [[квадратный корень|квадратного корня]] из факторизуемого числа &amp;#039;&amp;#039;n&amp;#039;&amp;#039; и в вычислении [[деление с остатком|остатка от деления]] &amp;#039;&amp;#039;n&amp;#039;&amp;#039; на каждое из этих чисел. Если остаток от деления на некоторое число &amp;#039;&amp;#039;i&amp;#039;&amp;#039; равен 0, то &amp;#039;&amp;#039;i&amp;#039;&amp;#039; является делителем &amp;#039;&amp;#039;n&amp;#039;&amp;#039;. В этом случае либо &amp;#039;&amp;#039;n&amp;#039;&amp;#039; объявляется составным, и алгоритм заканчивает работу (если тестируется простота &amp;#039;&amp;#039;n&amp;#039;&amp;#039;), либо &amp;#039;&amp;#039;n&amp;#039;&amp;#039; сокращается на &amp;#039;&amp;#039;i&amp;#039;&amp;#039; и процедура повторяется (если осуществляется факторизация &amp;#039;&amp;#039;n&amp;#039;&amp;#039;). По достижении квадратного корня из &amp;#039;&amp;#039;n&amp;#039;&amp;#039; и невозможности сократить &amp;#039;&amp;#039;n&amp;#039;&amp;#039; ни на одно из меньших чисел &amp;#039;&amp;#039;n&amp;#039;&amp;#039; объявляется простым{{sfn|Childs|2009|pp=117-118}}.&lt;br /&gt;
&lt;br /&gt;
Для ускорения перебора часто не проверяются чётные делители, кроме числа 2, а также делители, кратные трём, кроме числа 3. При этом тест ускоряется в три раза, так как из каждых шести последовательных потенциальных делителей необходимо проверить только два, а именно вида 6·&amp;#039;&amp;#039;k&amp;#039;&amp;#039;±1, где &amp;#039;&amp;#039;k&amp;#039;&amp;#039; — [[натуральное число]].&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм является ресурсоемким при проверке больших чисел на простоту, но для его ускорения можно прибегнуть к следующим методам оптимизации. Для объяснения возьмем три последовательных числа (n-1, n, n+1). Предположим, что число n — простое, не равное двум. Так как n — простое, то слева и справа от него будут стоять числа, кратные двум, а исходя из того, что мы рассматриваем тройку подряд идущих чисел, среди них обязательно найдётся число, кратное трем. Тогда число n-1 и n+1 кратны двум, и одно из них кратно трем; следовательно, одно из этих чисел будет кратно шести. Теперь мы можем сказать, что простое число, большее трех, всегда будет стоять рядом с числом, кратным шести. Оптимизируя наш алгоритм, мы можем изначально проверить окрестность большого числа N, а именно N-1 и N+1, на кратность 6, и после этого запустить алгоритм проверки на простоту. Данный метод можно использовать и на задачах, связанных с отрезком чисел, и перебирать только те, которые стоят рядом с числом, кратным шести.&lt;br /&gt;
&lt;br /&gt;
== Скорость  ==&lt;br /&gt;
Худший случай, если перебор придется проводить от 2 до корня из &amp;#039;&amp;#039;n&amp;#039;&amp;#039;. Сложность данного алгоритма&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;O(n^{1/2})=\sqrt[2]{n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
Для иллюстрации проведем перебор делителей числа &amp;#039;&amp;#039;n&amp;#039;&amp;#039; = 29. &amp;#039;&amp;#039;i&amp;#039;&amp;#039; — возможные делители &amp;#039;&amp;#039;n&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[n^{1/2}] = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!i&lt;br /&gt;
!n % i&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Так как ни один из остатков деления 29 не равен 0, то 29 объявляется простым.&lt;br /&gt;
&lt;br /&gt;
Пусть теперь &amp;#039;&amp;#039;n&amp;#039;&amp;#039; = 7399, тогда{{sfn|Crandall, Pomerance|2005|pp=117-119}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[n^{1/2}] = 86&amp;lt;/math&amp;gt; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!i&lt;br /&gt;
!n % i&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
|}&lt;br /&gt;
Так как остаток деления 7399 на 7 равен 0, то 7399 не является простым.&lt;br /&gt;
&lt;br /&gt;
== Практическое применение ==&lt;br /&gt;
В практических задачах данный [[алгоритм]] применяется редко ввиду его большой [[Вычислительная сложность|вычислительной сложности]], однако его применение оправдано в случае, если проверяемые числа относительно невелики, так как данный алгоритм довольно легко реализуем{{sfn|Childs|2009|pp=117-118}}.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
{{Викиучебник|Программные реализации перебора делителей|Программные реализации перебора делителей}}&lt;br /&gt;
* [[Решето Эратосфена]]&lt;br /&gt;
* [[Решето Сундарама]]&lt;br /&gt;
* [[Решето Аткина]]&lt;br /&gt;
* [[Тест простоты]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{примечания}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* {{книга |автор= Lindsay N. Childs | название=A Concrete Introduction to Higher Algebra  |ссылка= https://archive.org/details/concreteintroduc0000chil_t3a9 |издание=3rd ed |место=New York |год=2009 |allpages=603 |ref=Childs}}&lt;br /&gt;
* {{книга |автор= Richard Crandall, Carl Pomerance | название=Prime numbers. A computational perspective  |ссылка= https://archive.org/details/primenumberscomp0002cran |издание=2nd ed |место=New York |год=2005 |allpages=597 |ref=Crandall, Pomerance}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://www.se16.info/js/factor.htm Javascript Prime Factor Calculator using trial division] {{Wayback|url=http://www.se16.info/js/factor.htm |date=20150110203651 }}. Способен обрабатывать числа до 9×10&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;&lt;br /&gt;
* {{Cite web|url = http://ru.math.wikia.com/wiki/Факторизация|title = Факторизация|author = |date = |publisher = wikia|access-date = 2022-03-29|archive-date = 2018-12-28|archive-url = https://web.archive.org/web/20181228053012/http://ru.math.wikia.com/wiki/%D0%A4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F|url-status = live}}&lt;br /&gt;
&lt;br /&gt;
{{Нет источников |дата=2014-10-19}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы факторизации]]&lt;br /&gt;
[[Категория:Тесты простоты]]&lt;/div&gt;</summary>
		<author><name>94.19.10.96</name></author>
	</entry>
</feed>