1 def collatz(num,i): 2 i =i + 1 3 if num%2 == 0: 4 return collatz(num//2,i) 5 elif num == 1: 6 return i 7 else: 8 return collatz((num+(num<<1) + 1),i) 9 10 k = 0 11 j = 0 12 13 for i in range(666666,1000000): 14 temp = collatz(i,0) 15 if k < temp: 16 j,k = i,temp 17 print(j,k) 18 19 print(j,k)
递归实现collatz计算。
使用num + num<<1 +1 替代3*num +1,提高一点点效率。
但是算完需要20S左右