3n+1猜想,又稱為Collatz猜想或Ularm猜想,是一個非常有趣的數學問題。問題的陳述是這樣的:
給定一個正整數n,如果n是奇數,則將它變成3n+1,否則將它變成n/2。按照同樣的規則,一直進行下去,最終必然會得到1。
雖然這個問題非常簡單,但直到現在,該猜想仍未被證明或被證偽。
一、猜想的歷史
3n+1猜想最早出現在1950年代,由德國數學家Lothar Collatz提出。他的研究結果發表在一本名為《應用數學和機械學》的雜誌上。然而,Collatz並沒有給出一個公式或證明來證明這個猜想,他只是簡單地通過幾個例子來表明這個猜想的可能性。
在此之後,許多數學家都試圖證明或反駁這個猜想,但都沒有成功。目前為止,該猜想仍然是一個未解決的數學問題。
二、猜想的性質
3n+1猜想的一個有趣的性質是,它能夠將一個非常大的數變成非常小的數。例如,如果n=27億,那麼它最終會達到以下的序列:
27億 -> 81億+1 -> 244億 -> 122億 -> 61億+1 -> 184億 -> 92億 -> 46億 -> 23億+1 -> 70億 -> 35億+1 -> 106億 -> 53億+1 -> 160億 -> 80億 -> 40億 -> 20億 -> 10億 -> 5億+1 -> 16億 -> 8億 -> 4億 -> 2億 -> 1
這表明,無論初始數值是多少,最終都會收斂到1。
此外,據報道,億萬富翁保羅·艾倫曾經向數學領域的朋友們下了一筆挑戰賞金:如果你能夠為任意正整數證明Collatz猜想,那麼他將會獎勵你10萬美元。
三、代碼實現
def collatz(n): count = 0 while n > 1: if n % 2 == 0: n = n // 2 else: n = 3 * n + 1 count += 1 return count print(collatz(27))
上面的代碼實現了3n+1猜想的計算,輸入一個正整數n,輸出收斂到1的步驟數。例如,當輸入27時,結果是112。
可以看到,這段代碼非常簡單,只需要一個while循環和兩個if語句即可實現。但儘管如此,該猜想仍是一個著名的數學難題。
原創文章,作者:NCWJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/148910.html