【发布时间】:2010-05-19 18:25:54
【问题描述】:
我用 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 以防它可以被任何其他数字整除。
标签: php prime-factoring