Matura 2017 (maj). Zadanie 2. Liczby pierwsze

Matura 2017 (maj). Zadanie 2. Liczby pierwsze

Parą liczb bliźniaczych nazwiemy dwie liczby pierwsze różniące się o 2. Liczbami bliźniaczymi są 11 i 13, gdyż obie liczby są pierwsze i różnica pomiędzy nimi wynosi 2. Para 13 i 15 nie jest parą liczb bliźniaczych, gdyż 15 jest liczbą złożoną.

Zadanie 1.

Uzupełnij poniższą tabelę. Wykonaj obliczenia i podaj odpowiedź, czy istnieje taka liczba, z którą liczba a tworzy parę liczb bliźniaczych.

Liczba a Czy liczba a jest pierwsza? Liczba b1=a+2 Czy liczba b1 jest pierwsza? Liczba b2=a–2 Czy liczba b2 jest pierwsza? Czy istnieje taka liczba b, z którą liczba a tworzy parę liczb bliźniaczych?
17 tak 19 tak 15 nie TAK
5 tak 7 tak 3 tak TAK
31 tak  33  nie  29 tak  TAK
41 tak  43  tak  39  nie  TAK
49 nie  51  nie  47  tak  NIE

Rozwiązanie:

Liczba pierwsza jest to taka liczba naturalna większa od 1, która posiada dokładnie dwa dzielniki: 1 i samą siebie. Sprawdzamy każdą liczby a czy jest to liczba pierwsza, jeśli nie to nawet nie musimy sprawdzać kolejnych liczb, zaś jeśli tak to sprawdzamy liczby b1=a-2 oraz b2=a+2. Jeśli, któraś z liczb b1, b2 jest liczbą pierwszą to wtedy mówimy, że liczby tworzą parę liczb bliźniaczych.

Zadanie 2.

Zapisz algorytm (w postaci listy kroków, schematu blokowego lub w wybranym języku programowania) sprawdzający, czy dana liczba należy do pary liczb bliźniaczych. Twój algorytm powinien być zgodny z poniższą specyfikacją.

Uwaga: w zapisie możesz wykorzystać tylko operacje dodawania, odejmowania, mnożenia, dzielenia, dzielenia całkowitego i brania reszty z dzielenia całkowitego, operacje logiczne oraz samodzielnie napisane funkcje.

Specyfikacja algorytmu:

Dane:

a – dodatnia liczba całkowita, a ≥ 3

Wynik:

komunikat TAK, jeżeli a należy do pary liczb bliźniaczych
komunikat NIE, jeżeli a nie należy do pary liczb bliźniaczych

Algorytm:

#include <iostream>
#include <math.h>
using namespace std;
bool czypierwsza(int a) {
  bool spr;
  if(a<2) spr = false;
  //gdy liczba jest mniejsza niz 2 to nie jest pierwsza
  for(int i=2;i<=sqrt(a);i++) {
    if(a%i==0) {
      spr = false;
      break;
    }
    spr = true;
  }
  return spr;
}
int main()
{
 cout << "Podaj liczbe: ";
 int liczba;
 cin >> liczba;
 if (( czypierwsza(liczba)&& czypierwsza(liczba-2)) || (czypierwsza(liczba) && czypierwsza(liczba+2)))
   cout << "TAK";
 else
   cout << "NIE" << endl;
 return 0;
}

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>