👤

O functie care imi gaseste primul numar prim dintr-un sir (varianta cu vector si o varianta fara vectori)​

Răspuns :

→ Varianta cu vector (sir)

#include <iostream>

using namespace std;

const int N = 10001;

int n, a[N + 1];

void primulNrPrim() {

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

       if (a[i] >= 2) {

           bool ok = true;

           for (int j = 3; j * j <= a[i]; j += 2) {

               if (a[i] % j == 0) {

                   ok = false;

               }

           }

           if (ok) {

               cout << a[i];

               return;

           }

       }

   }

   cout << "Nu exista niciun nr prim in sir";

}

int main() {

   cin >> n;

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

       cin >> a[i];

   }

   primulNrPrim();

   return 0;

}

→ Varianta fara vector (fara sir, numerele nu sunt stocate)

#include <iostream>

using namespace std;

int n;

bool prim(int x) {

   if (x < 2) {

       return false;

   }

   if (x != 2 && x % 2 == 0) {

       return false;

   }

   for (int i = 3; i * i <= x; i += 2) {

       if (x % i == 0) {

           return false;

       }

   }

   return true;

}

int main() {

   cin >> n;

   bool exista = false;

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

       int x;

       cin >> x;

       if (prim(x)) {

           cout << x;

           exista = true;

           break;

       }

   }

   if (!exista) {

       cout << "Nu exista niciun nr prim in sir";

   }

   return 0;

}

→ Explicatie

  • In prima varianta mai intai am citit sirul (am stocate numerele), iar apoi am afisat primul nr prim.
  • A doua varianta dupa ce a citit un nr il va verifica daca e prim, daca este atunci il va afisa si va incheia citirea.
  • Ambele variante contin un check la final in caz ca nu s-a citit niciun nr prim.

De retinut: Un numar este prim daca: este numar natural, mai mare decat 1 si care are exact 2 divizori pozitivi, 1 si el insusi.