考拉兹猜想(英語: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