fun isPrime(n: Long): Boolean {
if (n < 2) return false
if (n == 2L || n == 3L) return true
if (n % 2L == 0L) return false
var i = 3L
while (i * i <= n) {
if (n % i == 0L) return false
i += 2
}
return true
}
fun nextFib(state: LongArray): Long {
val f = state[0]
val next = state[0] + state[1]
state[0] = state[1]
state[1] = next
return f
}
fun main() {
val fibState = longArrayOf(1L, 1L)
var count = 0
val out = StringBuilder()
while (count < 10) {
val f = nextFib(fibState)
if (isPrime(f)) {
out.append("$f ")
count++
}
}
println(out.toString())
}
/*
run:
2 3 5 13 89 233 1597 28657 514229 433494437
*/