Ben bir ilişkisel dizi var, yani
$primes = array(
2=>2,
3=>3,
5=>5,
7=>7,
11=>11,
13=>13,
17=>17,
// ...etc
);
sonra yapmam
// seek to first prime greater than 10000
reset($primes);
while(next($primes) < 10000) {}
prev($primes);
// iterate until target found
while($p = next($primes)) {
$res = doSomeCalculationsOn($p);
if( IsPrime($res) )
return $p;
}
Sorun, IsPrime de $ asal dizi aracılığıyla döngüler olduğunu
function IsPrime($num) {
global $primesto, $primes, $lastprime;
if ($primesto >= $num)
// using the assoc array lets me do this as a lookup
return isset($primes[$num]);
$root = (int) sqrt($num);
if ($primesto < $root)
CalcPrimesTo($root);
foreach($primes as $p) { // <- Danger, Will Robinson!
if( $num % $p == 0 )
return false;
if ($p >= $root)
break;
}
return true;
}
Hangi ben yinelemeye ediyorum dizi işaretçi trashes.
Ben bu yan etkisi yok yani IsPrime in () fonksiyonu dizinin iç imlecini kaydetmek ve geri yüklemek mümkün olmak istiyorum. Bunu yapmak için herhangi bir yolu var mı?