To use 模幂 http://en.wikipedia.org/wiki/Modular_exponentiation正如您在使用时所需要的费马素性测试 http://en.wikipedia.org/wiki/Fermat_primality_test对于大数字(100,000+),它需要一些非常大的计算。
当我将两个大数相乘(例如:62574 和 62574)时,PHP 似乎将结果转换为浮点数。获取其模值会返回奇怪的值。
$x = 62574 * 62574;
var_dump($x); // float(3915505476) ... correct
var_dump($x % 104659); // int(-72945) ... wtf.
有什么方法可以让PHP正确执行这些计算吗?或者,是否有另一种方法可以找到适用于大数的模值?
由于某种原因,PHP 中有两个标准库处理任意长度/精度数字:BC Math http://www.php.net/manual/en/book.bc.php and GMP http://www.php.net/manual/en/book.gmp.php。我个人更喜欢GMP,因为它更新鲜,API更丰富。
基于我已经实施的 GMP小数2类 https://github.com/ikr/money-math-php用于存储和处理货币金额(例如 100.25 美元)。A lotmod 计算没有任何问题。测试用very大数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)