function isPrime(int $n): bool {
if ($n < 2) return false;
if ($n === 2 || $n === 3) return true;
if ($n % 2 === 0) return false;
for ($i = 3; $i * $i <= $n; $i += 2) {
if ($n % $i === 0) return false;
}
return true;
}
function nextFib(array &$state): int {
$f = $state[0];
$next = $state[0] + $state[1];
$state[0] = $state[1];
$state[1] = $next;
return $f;
}
$fibState = [1, 1];
$count = 0;
while ($count < 10) {
$f = nextFib($fibState);
if (isPrime($f)) {
echo $f . " ";
$count++;
}
}
/*
run:
2 3 5 13 89 233 1597 28657 514229 433494437
*/