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

考拉兹猜想代码处理大数20^200时除法结果异常问题

问题原因及解决方案

核心原因:浮点数精度丢失

你遇到的问题确实是超大整数导致的精度丢失,问题出在代码里的除法操作:

numero = int(numero/2)

Python中/运算符会将整数转换为浮点数进行计算,但双精度浮点数(Python默认的float类型)的有效精度仅约15-17位。20^200是远超这个精度范围的超大整数,转换成浮点数时会丢失大量尾部精确信息,再转回整数自然就和预期结果不符。

修复方法:使用整数除法

将除法操作替换为Python的整数除法运算符//,它会直接对整数进行精确运算,不会触发浮点数转换:

VERDE = "\033[1;42m"
ROJO = "\033[0;41m"

numero = int(input("Que numero quieres meter: "))
print(len(str(numero)))
print(numero)

while numero != 2:
    if numero % 2 == 0:
        numero = numero // 2  # 替换为整数除法
        print(ROJO, numero)
    else: 
        numero = 3*numero +1
        print(VERDE, numero)

另外,对于偶数除以2的操作,也可以用位运算numero >> 1,效果与整数除法一致,运算效率更高。

验证效果

修改后输入20^200的精确值,第一次迭代会正确输出你预期的结果:

80346902212949513777098104617058130126110149689139641765068800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:10:26