JirR02 3013d7ad47 Converted everything to orgmode
converted everything to orgmode and added solution to the README files
2025-03-30 23:22:57 +02:00
..
2025-03-30 23:22:57 +02:00

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 🇨🇭