func isPrime(_ n: UInt64) -> Bool {
if n < 2 { return false }
if n == 2 || n == 3 { return true }
if n % 2 == 0 { return false }
var i: UInt64 = 3
while i * i <= n {
if n % i == 0 { return false }
i += 2
}
return true
}
func nextFib(_ state: inout (UInt64, UInt64)) -> UInt64 {
let f = state.0
let next = state.0 + state.1
state = (state.1, next)
return f
}
var fibState: (UInt64, UInt64) = (1, 1)
var count: Int = 0
var out: String = ""
while count < 10 {
let f = nextFib(&fibState)
if isPrime(f) {
out += "\(f) "
count += 1
}
}
print(out)
/*
run:
2 3 5 13 89 233 1597 28657 514229 433494437
*/