我在PHP中编写了一个程序来查找最大的素数因子。我认为它是非常优化的,因为它的加载速度非常快。但是,存在一个问题:它不能计算非常大数量的主要因素。下面是程序:使用php的最大素因子
function is_even($s) {
$sk_sum = 0;
for($i = 1; $i <= $s; $i++) {
if($s % $i == 0) { $sk_sum++; }
}
if($sk_sum == 2) {
return true;
}
}
$x = 600851475143; $i = 2; //x is number
while($i <= $x) {
if($x % $i == 0) {
if(is_even($i)) {
$sk = $i; $x = $x/$i;
}
}
$i++;
}
echo $sk;
我将'is_even'重命名为'is_prime',并让它在函数的最后一行返回false。此外,您不必在该循环中包含$ i = 1或$ i = $ s,如果可以用任何其他数字进行分割,则可以返回false。 – catchmeifyoutry 2010-05-19 18:32:31