You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Collatz算法处理大整数时步数计算错误如何解决

Collatz步数计算错误问题修复方案

问题根源

  • 错误使用/浮点除法:Python中/运算会返回浮点数类型,双精度浮点数仅能精确表示小于2^53(约900万亿)的整数,你输入的931386509544713451远大于该阈值,运算过程中会出现精度丢失,导致后续数值计算全部错误。
  • 额外的类型转换无意义:Python原生int类型支持任意精度的大整数,不需要用ctypes限定数值类型,ctypes的ulonglong最大仅支持到2^64-1,Collatz运算过程中数值还会继续增大,依然会出现溢出问题。

修复方案

仅需将浮点除法替换为整数除法//,全程保持变量为整数类型即可,同时可删掉冗余的math.floor操作:

number = 931386509544713451

def collatz_algorithm(n):
    x = n
    step_count = 0
    while x != 1:
        if x % 2 == 0:
            x = x // 2
        else:
            x = 3 * x + 1
        step_count += 1
    print(f"\nNumber of steps for {n}: {step_count}")

collatz_algorithm(number)

运行上述代码即可得到和参考值一致的步数结果。

内容的提问来源于stack exchange,提问作者Elmatador DeAngel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:24:04