Ich habe versucht, den n-te Primzahl in PHP zu berechnen:Soll der Generator faul sein?
function is_prime($n) {
if ($n <= 1) {
return false;
} elseif ($n <= 3) {
return true;
} elseif (($n % 2 == 0) || ($n % 3 == 0)) {
return false;
}
$i = 5;
while ($i * $i <= $n) {
if (($n % $i == 0) || ($n % ($i + 2) == 0)) {
return false;
$i = $i + 6;
}
}
return true;
}
function prime_gen() {
for($x=0; $x< PHP_INT_MAX; $x++) {
if(is_prime($x)){
yield $x;
}
}
}
function nth_prime($n) {
for($i=0; $i<=$n; $i++) {
$ps = iterator_to_array(prime_gen());
}
return $ps[$n-1];
}
echo nth_prime(9);
Ich habe Maximum execution time of 3 seconds exceeded
Fehler. Soll der Generator faul sein? Sollte ich nicht for($x=0; $x< PHP_INT_MAX; $x++)
schreiben?