<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Гипотеза Коллатца on kenji.blog</title><link>http://kenji.blog/ru/tags/%D0%B3%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0-%D0%BA%D0%BE%D0%BB%D0%BB%D0%B0%D1%82%D1%86%D0%B0/</link><description>Recent content in Гипотеза Коллатца on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Tue, 15 Jul 2025 18:03:03 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/tags/%D0%B3%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0-%D0%BA%D0%BE%D0%BB%D0%BB%D0%B0%D1%82%D1%86%D0%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>Гипотеза Коллатца</title><link>http://kenji.blog/ru/p/collatz-conjecture/</link><pubDate>Tue, 15 Jul 2025 18:03:03 +0900</pubDate><guid>http://kenji.blog/ru/p/collatz-conjecture/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img.png" alt="Featured image of post Гипотеза Коллатца" />&lt;h1 id="действительно-ли-любое-число-в-конце-концов-становится-1--играем-с-гипотезой-коллатца">&amp;ldquo;Действительно ли любое число в конце концов становится 1?&amp;rdquo; ── Играем с гипотезой Коллатца
&lt;/h1>&lt;p>Всем привет! Это Кенджи.&lt;/p>
&lt;p>Внезапный вопрос: когда вы слышите о &amp;ldquo;правиле, по которому любое число в итоге превращается в 1&amp;rdquo;,
разве это не кажется вам немного странным?&lt;/p>
&lt;blockquote>
&lt;p>Например, 19, или 87, или даже 1000000.
Если вы следуете определенному правилу и манипулируете числами, по какой-то причине они всегда сводятся к &amp;ldquo;1&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;p>Эта сказочная история и есть &lt;strong>гипотеза Коллатца (Collatz Conjecture)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="для-начала-что-такое-гипотеза-коллатца">Для начала, что такое гипотеза Коллатца?
&lt;/h2>&lt;p>Сначала позвольте мне представить правила.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Старт: выберите любое &lt;strong>положительное целое число&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Операция:&lt;/p>
&lt;ul>
&lt;li>Если четное → делим пополам (n → n / 2)&lt;/li>
&lt;li>Если нечетное → умножаем на 3 и прибавляем 1 (n → 3n + 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Если повторять это снова и снова, гипотеза гласит, что &lt;strong>любое число в конечном итоге достигнет 1&lt;/strong>.&lt;/p>
&lt;p>Например, если мы начнем с &lt;code>6&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Оно действительно стало &amp;ldquo;1&amp;rdquo;. С возвращением!&lt;/p>
&lt;hr>
&lt;h2 id="давайте-попробуем-это-в-коде-коллатц-на-python">Давайте попробуем это в коде: Коллатц на Python
&lt;/h2>&lt;p>Что ж, в таких случаях быстрее всего попробовать написать код!
Давайте выведем &amp;ldquo;последовательность Коллатца&amp;rdquo; с помощью Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">steps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Пример: давайте начнем с 19&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">19&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>При запуске:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Оно успешно достигает 1.
Пришлось сделать немало крюков, но в итоге мы на финише!&lt;/p>
&lt;p>Кстати, даже если мы начнем с 29, оно достигнет 1 таким же образом.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pythonprint(collatz(29))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>При запуске:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>На это уходит целых 111 шагов!&lt;/p>
&lt;p>Более того, по пути оно иногда раздувается до более чем 9000.
Это тот случай, когда перед финишем делается огромный крюк.&lt;/p>
&lt;hr>
&lt;h2 id="итак-что-же-в-итоге-в-этом-такого-удивительного">Итак, что же в итоге в этом такого удивительного?
&lt;/h2>&lt;p>Удивительное в этой гипотезе то, что:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Хотя это не доказано, похоже, что оно всегда сводится к 1, независимо от того, какое число вы берете&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Вот в чем крутизна.&lt;/p>
&lt;p>А? А как насчет триллиона или квадриллиона&amp;hellip;?&lt;/p>
&lt;p>Если вы подумали об этом, то вы очень проницательны.
На самом деле, с помощью компьютеров это было проверено вплоть до &amp;ldquo;2 в 68-й степени&amp;rdquo;,
и &lt;strong>все они достигают 1&lt;/strong>. Невероятно&amp;hellip;&lt;/p>
&lt;p>Но &lt;strong>не было теоретически доказано, что &amp;ldquo;все будет именно так&amp;rdquo;&lt;/strong>.
Вот что называется &amp;ldquo;нерешенной проблемой&amp;rdquo; в мире математики.&lt;/p>
&lt;hr>
&lt;h2 id="кто-такой-мистер-коллатц">Кто такой мистер Коллатц?
&lt;/h2>&lt;p>Итак, дочитав до этого места, вы, возможно, спросите: &amp;ldquo;Кто вообще такой Коллатц?&amp;rdquo;
Я представлю его как следует!&lt;/p>
&lt;ul>
&lt;li>Имя: &lt;strong>Лотар Коллатц (Lothar Collatz)&lt;/strong>&lt;/li>
&lt;li>Гражданство: Германия&lt;/li>
&lt;li>Годы жизни: 1910 - 1990&lt;/li>
&lt;li>Профессия: Математик (активно работал в области функционального анализа и теории чисел)&lt;/li>
&lt;/ul>
&lt;p>Он предложил эту гипотезу в 1937 году,
и с тех пор, на протяжении более 80 лет, &lt;strong>никто не смог ее ни доказать, ни опровергнуть&lt;/strong>.&lt;/p>
&lt;p>Кстати, эта проблема настолько проста, но в то же время невероятно глубока,
что даже Пол Эрдёш (супер-известный математик) сказал нечто подобное.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Математика еще не созрела для решения проблемы Коллатца.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Иными словами, существует теория, что человеческая математика еще не доросла до этой загадки&amp;hellip;&lt;/p>
&lt;hr>
&lt;h2 id="сложные-формулы-не-нужны">&amp;ldquo;Сложные формулы&amp;rdquo; не нужны
&lt;/h2>&lt;p>Прелесть гипотезы Коллатца в том, что &lt;strong>каждый может с ней поиграть&lt;/strong>.&lt;/p>
&lt;p>Вам нужны только ручка и бумага.
Если вы напишете код на Python, вы сможете проверять это автоматически.
И при этом &lt;strong>передовые математики всерьез ломают над ней голову&lt;/strong>.&lt;/p>
&lt;p>Разве это не захватывающе?&lt;/p>
&lt;hr>
&lt;h2 id="бонус-код-для-массовой-проверки">Бонус: Код для массовой проверки
&lt;/h2>&lt;p>Я также приложу код для проверки множества чисел за один раз.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">21&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> (количество шагов: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Этот код сразу выведет последовательности Коллатца для чисел от &amp;ldquo;1 до 20&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="вывод-этот-мир-действительно-странный">Вывод: Этот мир действительно странный
&lt;/h2>&lt;p>Итак, это гипотеза Коллатца.&lt;/p>
&lt;ul>
&lt;li>Хотя она очень проста&lt;/li>
&lt;li>Никто не может ее доказать&lt;/li>
&lt;li>Это огромная проблема в математическом мире&lt;/li>
&lt;/ul>
&lt;p>Она оказалась чем-то вроде сгустка тайн.&lt;/p>
&lt;p>Даже новички в программировании могут попробовать ее, так что, пожалуйста, поиграйте!&lt;/p>
&lt;hr>
&lt;h2 id="рекомендуемые-ссылки-для-тех-кому-интересно">Рекомендуемые ссылки (для тех, кому интересно)
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ru.wikipedia.org/wiki/%d0%93%d0%b8%d0%bf%d0%be%d1%82%d0%b5%d0%b7%d0%b0_%d0%9a%d0%be%d0%bb%d0%bb%d0%b0%d1%82%d1%86%d0%b0" target="_blank" rel="noopener"
>Википедия: Гипотеза Коллатца&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>Статья Теренса Тао (на английском)&lt;/a>&lt;/li>
&lt;li>Также может быть интересно создать визуализированную версию на Python! (Если будет запрос, я ее сделаю)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Если вы хотите узнать больше историй о &amp;ldquo;таинственной математике × программировании&amp;rdquo;,
пожалуйста, не стесняйтесь писать &amp;ldquo;расскажи больше&amp;rdquo;.
В будущем я расскажу вам о гипотезе Римана, простых числах и многом другом!&lt;/p>
&lt;hr>
&lt;p>📮 Конец!&lt;/p>
&lt;hr></description></item></channel></rss>