当试图在javascript和java中找到最大的素因子600851475143时,PHP不起作用,这是完美的
我有下面的代码来查找一个数字的最大素数因子,如果我使用11位数字,效果很好,但是当我使用这个数字:600851475143时,它会不断加载,只是不显示结果 欢迎任何意见当试图在javascript和java中找到最大的素因子600851475143时,PHP不起作用,这是完美的,php,Php,我有下面的代码来查找一个数字的最大素数因子,如果我使用11位数字,效果很好,但是当我使用这个数字:600851475143时,它会不断加载,只是不显示结果 欢迎任何意见 <?php $number = 600851475143; $prime = 2; do { if($number % $prime == 0) { $number = $number / $prime; $primes[] = $prime; } else {
<?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的许多限制之一。还有其他更合适的工具来处理这类问题。也许,你的时间可以更有效地用这些工具来探索这个问题,而不是这个不合适的工具?