Php 最高素数分解算法不适用于大数
我试图找到最大的素因子600851475143,下面是代码:Php 最高素数分解算法不适用于大数,php,Php,我试图找到最大的素因子600851475143,下面是代码: function find($x){ $lpf = 2; while($x > $lpf){ if($x%$lpf == 0){ $x = $x/$lpf; $lpf = 2; }else{ $lpf +=1; } } echo $lpf; } find(600851475
function find($x){
$lpf = 2;
while($x > $lpf){
if($x%$lpf == 0){
$x = $x/$lpf;
$lpf = 2;
}else{
$lpf +=1;
}
}
echo $lpf;
}
find(600851475143);
它将只回显2,但该算法在较小的数字上运行良好。有什么问题吗?您使用的是32位php吗?600851475143远远超出了标准php签名32位int的可表示范围。@MarcB php_int_SIZE为4,因此显然是可以的(如果使用64位,请检查它是否有效?使用32位(4字节)安装。我正在进行intsize=8的64位安装。在此处运行代码返回6857。您过于谨慎,从而减慢了算法的速度。您可以安全地删除$lpf=2;语句。还可以探索数字轮的概念。关于此问题的最后一个大线索:,同时查看一般搜索结果