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

Salut! Va rog mult sa ma ajutali la aceasta problema in c++. In rezolvarea ei trebuie folosita o functie prim
Cerinţa
Să se scrie o funcție C++ care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cel mai mare număr prim mai mic decât n și cel mai mic număr prim mai mare decât n.

Restricţii şi precizări
numele funcției va fi sub
funcția va avea exact trei parametri, în această ordine:
primul parametru, n, reprezintă un număr natural, 3 ≤ n < 1.000.000.000
a și b sunt parametrii prin care funcția va întoarce cele două valori cerute, astfel:
a este cel mai mare număr prim mai mic decât n
b este cel mai mic număr prim mai mare decât n


Exemplu
Dacă n=28, apelul subprogramului va furniza prin parametrul a valoarea 23, iar prin b valoarea 29.

Important
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea solutiei!

Răspunsuri la întrebare

Răspuns de Sergetec
1

Salut!

Ai rezolvarea in C++ mai jos

//functie eficienta pt determinarea primalitatii

bool prim(int n) {

   if (n <= 1) {

       return false;

   }

   else if (n != 2 && n % 2 == 0) {

       return false;

   }

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

       if (n % i == 0) {

           return false;

       }

   }

   return true;

}

//subprogramul cerut de cerinta

void sub(int n, int& a, int& b) {

   for (int i = n - 1; i; --i) {

       a = i;

       if (prim(a)) {

           break;

       }

   }

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

       b = i;

       if (prim(b)) {

           break;

       }

   }

}


dinesculidia: Mulțumesc!
dinesculidia: Ma mai poți ajuta te rog la o problema ?
Sergetec: Desigur, e deja postata sau o postezi acum
dinesculidia: Acum
dinesculidia: Gata!
Alte întrebări interesante