双循环不起作用

时间:2011-07-19 19:32:46

标签: php

我试图用PHP解决Euler的Project 9。我很确定我的逻辑很好,但是我的双重for循环只通过第一个循环,完成第二个循环并停止。 Any1知道我做错了什么?我想做第一次998次,第二次998次。 (注意:我知道我可以优化代码,因为因为a,我将永远不会高于331

//
//A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
//a² + b² = c²
//
//For example, 3² + 4² = 9 + 16 = 25 = 5².
//
//There exists exactly one Pythagorean triplet for which a + b + c = 1000.
//Find the product abc.

$na = array();
$a=1;
$b=1;
$c=0;
$z=998;//upper bound
for($a;$a<$z;$a++){
    for($b;$b<$z;$b++){
        $c=(1000-$a)-$b;
        if(($a*$a)+($b*$b)==($c*$c))
            echo "played: $a + $b + $c = 1000<br />";
    }
}

结果是(当我评论if out)时: 上场时间:1 + 1 + 998 = 1000  至 播放:1 + 997 + 2 = 1000

3 个答案:

答案 0 :(得分:8)

您的变量$b永远不会重置,因此在内循环中第一次后它将始终等于$z。 你需要的是什么 ... for($b = 1; $b < $z; $b++) { ...

答案 1 :(得分:4)

您需要在外循环的每次迭代中重置$b

答案 2 :(得分:1)

你走了。

for($a = 1;$a<$z;$a++){
    for($b = 1;$b<$z;$b++){
        $c=(1000-$a)-$b;
        if(($a*$a)+($b*$b)==($c*$c))
            echo "played: $a + $b + $c = 1000<br />";
    }
}