项目Euler#5 php怀疑!

时间:2009-02-03 09:29:59

标签: php performance for-loop

problem euler #5

我找到了解决方案,但我不知道为什么第一个代码更快(我为了试图更清楚代码而放置14个)唯一的区别是我消除了为我写的巨大的if < / p>

if($num%14==0 && $num%13==0 &&$num%12==0 &&$num%11==0 &&$num%10==0 && $num%9==0 && $num%8==0 && $num%7==0 && $num%6==0 && $num%5==0 && $num%4==0 && $num%3==0 && $num%2==0 && $num%1==0){
    $notFound=0;
}

为什么第二个代码比第一个代码慢得多?使用 for ,它会更快。在另一种语言中是一样的???

$notFound=0;
for ( $i=14; $i>=2 && notFound==0; $i--){
    if($num%$i!=0){
        $notFound=1;
    }
}

4 个答案:

答案 0 :(得分:2)

for ( $i=14; $i>=2 && notFound==0; $i--){

应该是

for ( $i=14; $i>=2 && $notFound==0; $i--){

答案 1 :(得分:2)

我会从最小的数字到最大的数字。因为如果一个数字可以被14整除,它也可以被2整除。

$notFound = 0;
for ($i=2; $i<=14; $i++) {
    if ($num % $i !== 0) {
        $notFound = 1;
        break;
    }
}

通过这样做,您可以尽早排除这些数字。

答案 2 :(得分:0)

我认为这是由于PHP的解释器开销(必须解析并执行for循环)。

答案 3 :(得分:0)

第二个代码示例只是执行比第一个更多的操作,所以我希望它会更慢。在这种情况下,您会发现虽然提供较差的性能,但for循环可提供更好的可读性和可维护性。