#include <iostream>
#include <cstdint>
bool isPrime(std::uint64_t n) {
if (n < 2) return false;
if (n == 2 || n == 3) return true;
if (n % 2 == 0) return false;
for (std::uint64_t i = 3; i * i <= n; i += 2)
if (n % i == 0)
return false;
return true;
}
std::uint64_t nextFib(std::uint64_t &a, std::uint64_t &b) {
std::uint64_t f = a;
std::uint64_t next = a + b;
a = b;
b = next;
return f;
}
int main() {
std::uint64_t a = 1, b = 1;
int count = 0;
while (count < 10) {
std::uint64_t f = nextFib(a, b);
if (isPrime(f)) {
std::cout << f << " ";
count++;
}
}
}
/*
run:
2 3 5 13 89 233 1597 28657 514229 433494437
*/