You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何提升大数质因数分解程序中整数除法的精度?

解决大数质因数分解中的除法精度问题

这个问题的核心是你用了普通的浮点数除法(/),而浮点数(比如Python里的float类型)的有效精度只有约15-17位。当处理18位的超大整数时,转成浮点数后必然会丢失部分精度,导致除法结果变成近似值,而非精确的整数。

要彻底解决这个问题,你只需要改用整数除法运算符//——它会直接返回精确的整数结果,完全规避浮点数带来的精度损失。Python的int类型支持任意精度的整数运算,不管数字多大,整数除法都能保证结果的准确性。

修改后的代码片段

for n in primes:
    if numb % n == 0:
        a = 0
        while numb % n == 0:
            a += 1
            factors[n] = a
            prime = False
        numb = numb // n  # 替换为整数除法//

额外提醒

  • 确保numb全程都是整数类型(Python的int),不要在任何步骤把它转换成浮点数。
  • 如果后续还遇到分解中断的情况,可能需要检查你的primes列表是否覆盖了足够大的质数范围,但当前的精度问题完全是除法运算符选择错误导致的,替换成//就能解决。

内容的提问来源于stack exchange,提问作者Simas Tautvaišas

火山引擎 最新活动