Python 我写了一个计算collatz猜想的程序,它可以工作,但不能计算非常大的数,我该如何解决这个问题?

Python 我写了一个计算collatz猜想的程序,它可以工作,但不能计算非常大的数,我该如何解决这个问题?,python,Python,Collatz猜想是一个著名的不可解问题,其中输入一个正整数,如果该数为偶数,则将该数减半,如果该数为奇数,则将该数乘以3并加1。这个循环会重复,直到你得到一个循环模式,它总是4,2,1 我不知道任何其他方法来完成这项任务,所以我没有尝试任何其他方法 if n % 2 == 0: n = int(n/2) steps = steps + 1 print(n) else: n = int(3*n+1) steps = steps

Collatz猜想是一个著名的不可解问题,其中输入一个正整数,如果该数为偶数,则将该数减半,如果该数为奇数,则将该数乘以3并加1。这个循环会重复,直到你得到一个循环模式,它总是4,2,1

我不知道任何其他方法来完成这项任务,所以我没有尝试任何其他方法

if n % 2 == 0:
       n = int(n/2)
       steps = steps + 1
       print(n)
else:
       n = int(3*n+1)
       steps = steps + 1
       print(n)
我的程序在这方面做得非常好,但我想计算非常大的数字页面,当我尝试时,我得到一个错误:

OverflowError: integer division result too large for a float
这条线

n = int(n/2)
执行浮点除法,然后将结果四舍五入为整数。请改为执行以下操作:

n = n // 2
然后您将得到不带中间浮点表示的整数除法。你强迫我在这里输入

这是不必要的

n = 3 * n + 1

也可以。

还请注意,当n变大时,使用n&1比使用n%2更快
n = 3 * n + 1