Featured image of post コラッツ予想

コラッツ予想

“任何數字最後都會變成 1” 這是真的嗎?── 試玩角谷猜想

你好!我是 kenji。

突然問一下,如果你聽到 “無論什麼數字最後都會變成 1 的規則”, 是不是覺得有點不可思議?

比如說 19,或者 87,甚至 1000000 也好。 只要按照適當的規則改變數字,不知為何最後都會收斂到 “1”。

這種像夢一樣的故事,就是 ** 角谷猜想(Collatz Conjecture) **。


到底什麼是角谷猜想?

首先來介紹規則。

  • 起點:選擇任意 ** 正整數 **

  • 操作:

    • 如果是偶數 → 就減半(n → n / 2)
    • 如果是奇數 → 就乘以 3 再加 1(n → 3n + 1)

如果一直重複這樣做,這就是一個 ** 任何數字最終都會到達 1 ** 的猜想。

例如,從 6 開始:

1
6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1

乖乖變成 “1” 了。歡迎回來!


用程式碼試試看:用 Python 跑角谷猜想

說到這個,這時候用程式碼測試最快! 讓我們用 Python 來輸出 “角谷數列” 吧。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def collatz(n):
    steps = [n]
    while n != 1:
        if n % 2 == 0:
            n = n // 2
        else:
            n = 3 * n + 1
        steps.append(n)
    return steps

# 範例:從 19 開始
print(collatz(19))

執行結果:

1
[19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

完美地到達了 1。 雖然繞了很大的遠路,但最後還是順利達陣!

順帶一提,即使從 29 開始,也會以同樣的方式到達 1。

1
print(collatz(29))

執行結果

1
2
3
4
5
6
7
8
[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,
121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350,
175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167,
502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479,
1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911,
2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732,
866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,
106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]

居然花了 111 個步驟!

而且,中途還有膨脹到 9000 以上的場面。 這是個瘋狂繞遠路之後才達陣的模式呢。


所以,這到底哪裡厲害?

這個猜想厲害的地方在於,

** 雖然還沒被證明,但不管用什麼數字似乎都會變成 1 **

就是這點。

咦?那 1 兆,或者 1 京呢…?

想到這裡的人,很敏銳。 實際上,已經用電腦確認到大約 “2 的 68 次方”, ** 全部都到達了 1 **。難以置信…。

但是,** 還沒有在理論上被證明 “全部都會這樣” **。 這就是在數學界被稱為 “未解問題” 的東西。


Collatz 先生是誰?

那麼,讀到這裡你一定會想 “說到底 Collatz 是誰?” 吧。 我來好好介紹一下!

  • 姓名: ** 洛塔爾·科拉茨 (Lothar Collatz) **
  • 國籍:德國
  • 生卒年:1910年〜1990年
  • 頭銜:數學家(活躍於泛函分析和數論領域)

他在 1937 年提出了這個猜想, 之後的 80 多年來, ** 誰也沒能證明,也無法反證 **。

順帶一提,這個問題雖然很簡單,但卻深奧到 就連保羅·艾狄胥(超級有名的數學家)都這麼說。

“數學還沒有成熟到可以處理角谷猜想”

也就是說,人類的數學還沒追上這個謎團的說法…。


不需要 “艱澀的數學公式”

角谷猜想的優點是, ** 任何人都可以玩 **。

只要有紙和筆就能算。 用 Python 寫程式碼的話,可以自動測試。 即便如此, ** 最頂尖的數學家們卻在認真挑戰它 **。

總覺得,是不是很令人興奮?


附錄:一口氣測試的程式碼

我也把能一次測試各種數字的程式碼貼上來。

1
2
3
for n in range(1, 21):
    steps = collatz(n)
    print(f"{n}: {steps}(步驟數: {len(steps)-1})")

這能一口氣印出 “1~20” 的角谷數列。


結論:這個世界,果然不可思議

這就是角谷猜想。

  • 明明超級簡單
  • 卻誰也無法證明
  • 在數學界是個大問題

就是這樣一個像謎團綜合體般的存在。

因為即使是程式設計初學者也能嘗試,請務必玩玩看喔~!


推薦連結(給有興趣的人)


如果你想知道更多這類 “不可思議系數學×程式設計” 的題材, 請隨時提出 “多教我一點” 的要求。 之後我也會介紹黎曼猜想、質數等等的各種話題!


📮結束!


comments powered by Disqus
使用 Hugo 建立
主題 StackJimmy 設計