1. Napisz algorytm, który wypisze kolejną liczbę pierwszą z zakresu od 1 do 100.
Dane wejściowe: 10
Wynik: 2, 3, 5, 7

2. Napisz algorytm, który wypisze kolejną liczbę pierwszą z zakresu od 1 do 100.
Dane wejściowe: 7
Wynik: 17

3. Wśród liczb pierwszych możemy wskazać tzw. liczby bliźniacze, czyli takie dwie pierwsze, których różnica wynosi 2 (3 i 5, 5 i 7, 11 i 13, 17 i 19, 29 i 31, 41 i 43 itd.). Napisz algorytm, który wypisze pierwszą liczbę z n-tej pary liczb bliźniaczych z zakresu od 1.

Dane wejściowe: 3
Wynik: 11


Odpowiedź :

Odpowiedź:

#include <iostream>

//sprawdzamy czy liczba jest liczba pierwsza

//nie jest to najbardziej optymalna metoda, ale najłatwiejsza bo sprawdzamy

//liczbe dzielników liczby. Czy jest równa 2 czyli czy dzieli się przez 1 i samą siebie

bool isPrime(int n) {

   int counter = 0;

   for (int i = 1; i <= n; i++) {

       if (n % i == 0) {

           counter++;

       }

   }

   return counter == 2;

}

//wyswitlamy liczny piewesze od 0 do n korzystajac z wczesniej napisanej funkcji

void printPrimes(int n) {

   for (int i = 0; i <= n; i++) {

       if (isPrime(i)) {

           std::cout << i << " ";

       }

   }

   std::cout << std::endl;

}

//suma liczb pierwszych od 0 do n z wykorzystaniem naszej funkcji

int primesSum(int n) {

   int sum = 0;

   for (int i = 0; i <= n; i++) {

       if(isPrime(i)){

           sum += i;

       }

   }

   return sum;

}

bool isTwin(int n){

   return isPrime(n) && isPrime(n + 2);

}

//wyświetla pierwsza liczbę z pary liczb bliżniaczych od 0 do n

void printTwin(int n){

   for(int i = 0; i < n - 1; i++){

       if(isTwin(i)){

           std::cout << i << std::endl;

       }

   }

}

int main() {

   printPrimes(10);

   std::cout << primesSum(7) << std::endl;

   printTwin(43);

   return 0;

}

Wyjaśnienie:

Nie wiem czy o to chodziło, ale takie mam wrażenie