package main
import (
"fmt"
"math"
)
func isPrime(n uint64) bool {
if n < 2 {
return false
}
if n == 2 || n == 3 {
return true
}
if n%2 == 0 {
return false
}
limit := uint64(math.Sqrt(float64(n)))
for i := uint64(3); i <= limit; i += 2 {
if n%i == 0 {
return false
}
}
return true
}
func nextFib(a, b *uint64) uint64 {
f := *a
next := *a + *b
*a = *b
*b = next
return f
}
func main() {
var a uint64 = 1
var b uint64 = 1
count := 0
for count < 10 {
f := nextFib(&a, &b)
if isPrime(f) {
fmt.Printf("%d ", f)
count++
}
}
}
/*
run:
2 3 5 13 89 233 1597 28657 514229 433494437
*/