<?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/zh-tw/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/</link><description>Recent content in プログラミング on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><copyright>kenjinote</copyright><lastBuildDate>Tue, 15 Jul 2025 18:03:03 +0900</lastBuildDate><atom:link href="http://kenji.blog/zh-tw/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>コラッツ予想</title><link>http://kenji.blog/zh-tw/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/</link><pubDate>Tue, 15 Jul 2025 18:03:03 +0900</pubDate><guid>http://kenji.blog/zh-tw/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/</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>你好！我是 kenji。&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>這種像夢一樣的故事，就是 ** 角谷猜想（Collatz Conjecture） **。&lt;/p>
&lt;hr>
&lt;h2 id="到底什麼是角谷猜想">到底什麼是角谷猜想？
&lt;/h2>&lt;p>首先來介紹規則。&lt;/p>
&lt;ul>
&lt;li>
&lt;p>起點：選擇任意 ** 正整數 **&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>如果一直重複這樣做，這就是一個 ** 任何數字最終都會到達 1 ** 的猜想。&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>說到這個，這時候用程式碼測試最快！
讓我們用 Python 來輸出 &amp;ldquo;角谷數列&amp;rdquo; 吧。&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-python" data-lang="python">&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">29&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;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>** 雖然還沒被證明，但不管用什麼數字似乎都會變成 1 **&lt;/p>
&lt;/blockquote>
&lt;p>就是這點。&lt;/p>
&lt;p>咦？那 1 兆，或者 1 京呢&amp;hellip;？&lt;/p>
&lt;p>想到這裡的人，很敏銳。
實際上，已經用電腦確認到大約 &amp;ldquo;2 的 68 次方&amp;rdquo;，
** 全部都到達了 1 **。難以置信&amp;hellip;。&lt;/p>
&lt;p>但是，** 還沒有在理論上被證明 &amp;ldquo;全部都會這樣&amp;rdquo; **。
這就是在數學界被稱為 &amp;ldquo;未解問題&amp;rdquo; 的東西。&lt;/p>
&lt;hr>
&lt;h2 id="collatz-先生是誰">Collatz 先生是誰？
&lt;/h2>&lt;p>那麼，讀到這裡你一定會想 &amp;ldquo;說到底 Collatz 是誰？&amp;rdquo; 吧。
我來好好介紹一下！&lt;/p>
&lt;ul>
&lt;li>姓名： ** 洛塔爾·科拉茨 (Lothar Collatz) **&lt;/li>
&lt;li>國籍：德國&lt;/li>
&lt;li>生卒年：1910年〜1990年&lt;/li>
&lt;li>頭銜：數學家（活躍於泛函分析和數論領域）&lt;/li>
&lt;/ul>
&lt;p>他在 1937 年提出了這個猜想，
之後的 80 多年來， ** 誰也沒能證明，也無法反證 **。&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;/p>
&lt;p>只要有紙和筆就能算。
用 Python 寫程式碼的話，可以自動測試。
即便如此， ** 最頂尖的數學家們卻在認真挑戰它 **。&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://ja.wikipedia.org/wiki/%e3%82%b3%e3%83%a9%e3%83%83%e3%83%84%e4%ba%88%e6%83%b3" target="_blank" rel="noopener"
>Wikipedia: 角谷猜想&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>Terence Tao 論文（英文）&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>