Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当试图在javascript和java中找到最大的素因子600851475143时,PHP不起作用,这是完美的_Php - Fatal编程技术网

当试图在javascript和java中找到最大的素因子600851475143时,PHP不起作用,这是完美的

当试图在javascript和java中找到最大的素因子600851475143时,PHP不起作用,这是完美的,php,Php,我有下面的代码来查找一个数字的最大素数因子,如果我使用11位数字,效果很好,但是当我使用这个数字:600851475143时,它会不断加载,只是不显示结果 欢迎任何意见 <?php $number = 600851475143; $prime = 2; do { if($number % $prime == 0) { $number = $number / $prime; $primes[] = $prime; } else {

我有下面的代码来查找一个数字的最大素数因子,如果我使用11位数字,效果很好,但是当我使用这个数字:600851475143时,它会不断加载,只是不显示结果

欢迎任何意见

<?php

$number = 600851475143;
$prime = 2;

do {
    if($number % $prime == 0) {
        $number = $number / $prime;
        $primes[] = $prime;
    } else {
        while(true) {
            $prime++;
            $true = is_prime($prime);
            if($true === true) {
                break;
            }
        }
    }
    if($number < $prime) break;
} while(true);

function is_prime($number, $prime = 2) {
    if($number % $prime == 0) {
        return false;
    } else if ($number % $prime++ == 0) {
        return false;
    }
    return true;
}

var_dump(max($primes));
?>

它不应该与溢出问题有关,但我认为您的
是_prime()
函数,实际上不起作用

var_dump(is_prime(9)); // bool(true)

无论如何,要在PHP中处理任意精度的数字,您应该查看

该数字对于您的系统来说可能太大可能相关:
max()
需要一个数组,您现在传递的是一个整数。它是array Amal,我现在已经修复了它,抱歉,但仍将sameCheck页面作为参考。整数类型有一些限制。您运行的是32位机器还是64位机器?我建议您已经发现PHP的许多限制之一。还有其他更合适的工具来处理这类问题。也许,你的时间可以更有效地用这些工具来探索这个问题,而不是这个不合适的工具?