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
șib
sunt parametrii prin care funcția va întoarce cele două valori cerute, astfel:a
este cel mai mare număr prim mai mic decâtn
b
este cel mai mic număr prim mai mare decâtn
- primul parametru,
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 soluţiei.
int sub(int n , int& a , int& b) { for(int i = n-1 ; 1 ; --i) { int cnt=0; for(int j = 1 ; j * j <= i ; ++j) { if(i%j==0) cnt+=2; if(j*j==i) cnt--; } if(cnt==2) { a=i; break; } } for(int i = n +1 ; 1 ; ++i) { int cnt=0; for(int j = 1 ; j * j <= i ; ++j) { if(i%j==0) cnt+=2; if(j * j == i) cnt--; } if(cnt==2) { b=i; break; } } return a; return b; }