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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP