使用PHP中的大数

使用模指数在使用费马素数检验对于大量(100,000+),它需要一些非常大的计算。

当我将两个大数(例如:62574和62574)相乘时,PHP似乎将结果转换为浮点数。得到它的模数值会返回奇怪的值。

$x = 62574 * 62574;
var_dump($x);          // float(3915505476) ... correct
var_dump($x % 104659); // int(-72945)  ... wtf.

有没有办法让PHP正确地执行这些计算?或者,是否有另一种方法可以找到适用于大数的模数值?


缥缈止盈
浏览 588回答 3
3回答

POPMUISE

出于某种原因,PHP中有两个标准库处理任意长度/精度数字:BC数学和GMP..我个人更喜欢GMP,因为它更新鲜,有更丰富的API。基于GMP我实现了十进制2类用于存储和处理货币金额(如100.25美元)。

慕盖茨4494581

用这个 $num1 = "123456789012345678901234567890";  $num2 = "9876543210";  $r    = mysql_query("Select @sum:=$num1 + $num2");  $sumR = mysql_fetch_row($r);  $sum  = $sumR[0];
打开App,查看更多内容
随时随地看视频慕课网APP