考慮下面的演算法:
當n等於1時停止,
如果n是奇數,則n=3n+1,
其餘的狀況,則n=n/2
例如,
輸入22,則會印出下列的數列: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
上面這個演算法,目前被推測認為在給予任何整數輸入值時皆可以停下來(也就是說最後都能夠輸出1)。儘管這個演算法還蠻簡單的,但卻無法確定這個推測是否是正確的;然而可以確定的是,在輸入值n介於0到1,000,000之間時,這個推測是正確的(實際上,還有比0到1,000,000更多的輸入值也是可以讓演算法停下來)。
給予一個輸入n,我們可以去算出總共會有幾個數字會被印出(包含1),而這個總數就被稱作n的循環長度(cycle-length of n)。在上面的範例中,22的循環長度為16。
問題來了:對任2個整數i,j我們想要知道介於i,j(包含i,j)之間的數所產生的數列中最大的 cycle length 是多少。
程式可重複執行直到兩整數皆為0停止。
1 10 100 200 201 210 900 1000 0 0
1 10 20 100 200 125 201 210 89 900 1000 174
ID | User | Problem | Subject | Hit | Post Date |
沒有發現任何「解題報告」 |