要使用大数(100,000+)的Fermat Primality Test时需要使用模幂运算,需要进行一些非常大的计算.
当我乘以两个大数(例如:62574和62574)时,PHP似乎将结果转换为浮点数.获取模数值会返回奇怪的值.
$x = 62574 * 62574;
var_dump($x); // float(3915505476) ... correct
var_dump($x % 104659); // int(-72945) ... wtf.
Run Code Online (Sandbox Code Playgroud)
有没有办法让PHP正确执行这些计算?或者,是否有另一种方法可以找到适用于大数的模数值?
小智 51
用这个
$num1 = "123456789012345678901234567890";
$num2 = "9876543210";
$r = mysql_query("Select @sum:=$num1 + $num2");
$sumR = mysql_fetch_row($r);
$sum = $sumR[0];
Run Code Online (Sandbox Code Playgroud)
Owe*_*wen 20
你看看了bcmod()
吗?php在32位平台上有超过2 ^ 31 - 1的整数问题.
var_dump(bcmod("$x", '104659') ); // string(4) "2968"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67705 次 |
最近记录: |