gpt4 book ai didi

java - 避免算术溢出

转载 作者:行者123 更新时间:2023-12-02 08:17:00 25 4
gpt4 key购买 nike

假设您有 2 个正 longab,它们大于 2^32(并且小于2^63),以及一个长整数c。在 java 和/或 c 中,执行诸如此类的操作的最佳方法是什么?

(a*b)%c

同时避免算术溢出。

编辑:c 在 2^34 左右,有时 a 和 b 都在 2^32c 之间...

对于我所处的具体情况,我最终避免使用 BigInteger。事实上,可以知道 ab 的一个除数> (情况并非总是如此),因此我会使用取模的算术属性来发挥我的优势。

最佳答案

假设一切都是积极的,那么您可以使用以下数学恒等式:

(a*b)%c == ((a%c) * (b%c)) % c

当然,这仍然不能消除溢出的可能性。

完全避免该问题的最简单方法是使用大整数库。

关于java - 避免算术溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com