Python3 實現 冰雹猜想 Collatz 考拉茲 猜想

考拉茲猜想(英語: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章