Task 3a: Fibonacci primes
Task
Fibonacci numbers are the integers in the following sequence: \(0, 1, 1, 2, 3, 5, 8, 13, 21, ...\). Each number is the sum of the two previous numbers.
Fibonacci primes are Fibonacci numbers that are also prime numbers. Write a program that asks the user for an integer \(m\) and then computes and prints all Fibonacci primes between \(0\) and \(m\) (including). Print each number on a new line.
Finally, on a new line print the total number of Fibonacci primes found.
Example
If your program is asked to print the Fibonacci primes between $0$ and $14$ the output should look something like this:
2
3
5
13
Found 4 Fibonacci primes
Important: using anything other than int
(e.g., unsigned int
, floating point numbers, long
, or double long
) is forbidden.
Solutions
#include <iostream>
int main() {
int a = 1;
int b = 1;
int cnt = 0; // Initialization of number of deviders
int count = 0; // Initialization of number of Fibonacci primes
int n = 2; // Fibonacci number
int i = 0; // Input variable
std::cin >> i;
for (; n <= i;) {
// Reset counters
cnt = 0;
// Check for deviders of Fibonacci number
if (n <= 22360) {
for (int j = 1; j <= 22360; ++j) { // 22360 = sqrt(500000000)
if (n % j == 0) {
++cnt;
}
}
// Increase count if Fibonacci number is a prime number
if (cnt == 2) {
std::cout << n << "\n";
++count;
}
} else if (n > 22360) {
for (int j = 1; j <= 22360; ++j) { // 22360 = sqrt(500000000)
if (n % j == 0) {
++cnt;
}
}
if (cnt == 1) {
std::cout << n << "\n";
++count;
}
}
// Initialize next Fibonacci number
a = b;
b = n;
n = a + b;
}
// End message
std::cout << count << "\n";
}
-——
Made by JirR02 in Switzerland 🇨🇭