Informatică, întrebare adresată de Iuliutza5274, 8 ani în urmă

Afisati primele n perechi de numere prime'consecutive pe multirnea numerelor
impare. Exemplu: pentru n=3 se va afisa (3,5), (5,7) (11,13). Un cod de clasa a 9 ca sa il pot intelege.


Sergetec: Cum vine asta ca mai intai se afiseaza (3, 5) (5, 7) adica ultimul element este egal cu primul din urmatoarea pereche, dar apoi se afiseaza (11, 13)?
Sergetec: Eu am sa iti fac rezolvarea cu elementele care nu se repeta, adica pentru n = 3 se va afisa (3, 5), (7, 11), (13, 17)
Sergetec: Daca nu este ok poti sa imi spui in comentarii

Răspunsuri la întrebare

Răspuns de Sergetec
0

Buna!

Ai rezolvarea mai jos in C++

#include <iostream>

using namespace std;

int main() {

   int n, cnt = 1, a = 0, b;

   bool prim;

   cin >> n;

   for (int i = 1; cnt <= n; i += 2) { //i += 2 pentru a merge doar prin numerele impare

       //Verificam daca i este prim

       prim = true;

       if (i <= 1) { //Niciun numar mai mic sau egal cu 1 nu este prim

           prim = false;

       }

       else if (i != 2 && i % 2 == 0) { //Niciun numar par nu este prim, in afara de 2

           prim = false;

       }

       if (prim) {

           for (int j = 3; j * j <= i && prim; j += 2) { //Daca numarul are cel putin 1 divizor (mergem doar pe divizorii impari, pt ca am verificat deja daca numarul este par sau nu)

               if (i % j == 0) {

                   prim = false;

               }

           }

       }

       if (prim) {

           //Daca prim este true inseamna ca am gasit un numar prim impar

           if (a == 0) {

               a = i;

           }

           else {

               b = i;

               cout << "(" << a << "," << b << "), ";

               cnt++;

               a = 0;

           }

       }

   }

   return 0;

}

  • Ti-am lasat explicatii sub forma de comentarii in cod.
Alte întrebări interesante