问题第一个初始循环在哪里(for($ i = 0; $ i< $ m; $ i ++)停止 当while循环结束时,while循环应该为每个循环运行 数组中的值p&这应该发生在最初的 环。我究竟做错了什么?为什么整个脚本停止了 while()循环结束
$p = array(1,4,16);
$q = array(26,10,20);
solution2($p,$q);
// searches the prime numbers for for a given range
// range is p[0] - q[0]
// script needs to loop the entire array p
// problem is afther the while loop ends the complete script ends
// It wont continue the initial for($i=0;$i<$m;$i++){ loop
// what am i doing wrong?
function solution2($p, $q){
$primes = array();
$semieprimes = array();
// P & Q are arrays with M intergers in it representing a range to seach prime numbers in: p[0] to q[]0], p[1] tot q[1] etc
$m = count($p);
echo "<br>m= ".$m."<br>";
for($i=0;$i<$m;$i++){
echo "i:".$i."<br>";
$inrange = true;
$start = $p[$i];
$end = $q[$i];
$number = $start;
echo $start."-".$end."<br>";
while($inrange){
// Prime number can only be divided by 1 or itself
for($i=2;$i<=$number;$i++){
if( (!($number==$i)) && (fmod($number ,$i))==0 ) {
echo $number." is not prime number<br>";
break;
}
if(($number==$i)) {
echo $number." is a prime number<br>";
$primes[] = $number;
}
}
$number++;
if($number > $end) { $inrange = false; echo "stop?"; }
}
$inrange=true;
}
var_dump($primes);
}
答案 0 :(得分:0)
您在两个for循环中都使用$i
。当您在第二个循环中更新它时,第一个循环将使用该新值。对第二个$j
循环使用其他变量,例如for
。
答案 1 :(得分:0)
你在外部和内部for循环使用$ i。如果你的内部循环导致$ i大于或等于$ m,则外部for循环将因$ i而退出