Python 中的科拉茨猜想


假設我們有一個正整數 n,我們需要找出其科拉茨序列的長度。如我們所知,科拉茨序列按順序生成,其中 n = n/2 當 n 為偶數,否則 n = 3n + 1。該序列在 n = 1 時結束。

因此,如果輸入為 n = 13,則輸出為 10,因為 [13, 40, 20, 10, 5, 16, 8, 4, 2, 1] 是這個序列。

為了解決這個問題,我們將按照以下步驟進行 −

  • 如果數字與 0 相同,則
    • 返回 0
  • length := 1
  • while num 與 1 不同,則
    • 當 num mod 2 為 0 時,num :=(num / 2);否則為 (3 * num + 1)
    • length := length + 1
  • 返回 length

讓我們看看以下實現以更好地理解 −

示例

 線上演示

class Solution:
   def solve(self, num):
      if num == 0:
         return 0
      length = 1
      while num != 1:
         num = (num / 2) if num % 2 == 0 else (3 * num + 1)
         length += 1
      return length
ob = Solution()
print(ob.solve(13))

輸入

13

輸出

10

更新於: 22-Sep-2020

2K+ 瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.