我找到了解决方案,但我不知道为什么第一个代码更快(我为了试图更清楚代码而放置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;
}
}
答案 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
循环可提供更好的可读性和可维护性。