UmN*_*obe 2 c java math precision
假设你有2个正long值a和b其是大于2^32(高于和更小2^63),和一个长整数c.在java和\或c中执行诸如的操作的最佳方法是什么
long
a
b
2^32
2^63
c
(a*b)%c
同时避免算术溢出.
编辑:c是各地2^34,有时A和B都只是间2^32和c...
2^34
我终于避免使用我BigInteger所处的特定情况.事实上,有可能知道两者的一个除数a和b(并非总是如此),所以我会使用算术属性modulo对我有利.
BigInteger
modulo
Oli*_*rth 8
假设一切都是正面的,那么你可以使用以下数学标识:
(a*b)%c == ((a%c) * (b%c)) % c
当然,这仍然不能消除溢出的可能性.
完全避免该问题的最简单方法是使用大整数库.
归档时间:
14 年,2 月 前
查看次数:
339 次
最近记录: