Php 最高素数分解算法不适用于大数

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

我试图找到最大的素因子600851475143,下面是代码:

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;语句。还可以探索数字轮的概念。关于此问题的最后一个大线索:,同时查看一般搜索结果