How to find the first 10 prime Fibonacci numbers in Swift

1 Answer

0 votes
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 

*/

 



answered 4 hours ago by avibootz
...