考拉茲猜想(英語:Collatz conjecture),又稱爲奇偶歸一猜想、3n+1猜想、冰雹猜想、角谷猜想、哈塞猜想、烏拉姆猜想或敘拉古猜想,是指對於每一個正整數,如果它是奇數,則對它乘3再加1,如果它是偶數,則對它除以2,如此循環,最終都能夠得到1。
以下是Collatz的Python3實現:
import time
#函數Collatz
def Collatz(number):
if number % 2 == 0:
print (number // 2)
return (number // 2)
elif number == 1:
print (number)
return number
else:
print(3*number + 1)
return(3*number + 1)
if __name__ == '__main__':
#輸入內容校驗:1.只能輸入數字;2.首次輸入錯誤後,變更輸入提示
while 1:
number = input('please input a digital: ').strip()
if number.isdigit(): break
while 1:
number = input('Input is illegal, Input again: ').strip()
if number.isdigit(): break
break
T = 0
#用while不斷循環函數直到結果爲1
while 1:
time.sleep(0.5) #每0.5S計算一次,不至於卡死
T += 1
print('seq:'+str(T),'--->', end=' ') #結合collatz函數內部print語句進行格式化輸出
number = Collatz(int(number))
if number == 1: break
運行結果如下:
please input a digital: test
Input is illegal, Input again: 5
seq:1 ---> 16
seq:2 ---> 8
seq:3 ---> 4
seq:4 ---> 2
seq:5 ---> 1