Cerința
Se dă un tablou cu n elemente, numere naturale. Să se înlocuiască fiecare element din tablou care nu este număr prim cu cel mai mic număr prim, mai mare decât el.
Se vor defini și apela următoarele subprograme:
citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
afisare, care afișează pe ecran elementele tabloului, separate prin exact un spațiu
prim, care verifică dacă un număr natural este prim
urmatorul_prim, care determină pentru un număr dat cel mai mic număr prim, mai mare decât acesta, folosind subprogramul prim
inloc, care realizează înlocuirile cerute.
În programele C/C++ nu se vor folosi variabile globale.
Date de intrare
Se citește de la tastatură numărul n, iar apoi cele n elemente ale tabloului.
Date de ieșire
Se vor afișa pe ecran elementele tabloului, separate prin exact un spațiu.
Restricții și precizări
1 ≤ n ≤ 1000
elementele tabloului vor fi mai mici decât 1.000.000.000Exemplu
Intrare
7
7 18 18 5 14 20 4
Ieșire
7 19 19 5 17 23 5
Răspunsuri la întrebare
#include <iostream>
using namespace std;
void citire(int &n, int v[])
{
cin >> n;
for (int i=0; i<n; ++i)
cin >> v[i];
}
bool prim(int m)
{
int p=1;
if (m<2) p=0;
if (m==2) p=1;
else
{
if (m%2==0) p=0;
else
{
for (int j=3; j*j<=m; j+=2)
if (m%j==0) { p=0; break;}
}
}
return p==1;
}
void urmatorul_prim(int &x)
{
while (!prim(x)) ++x;
}
void inloc(int n, int v[])
{
for (int i=0; i<n; ++i)
{
if (!prim(v[i])) urmatorul_prim(v[i]);
}
}
void afisare(int n, int v[])
{
for (int i=0; i<n; ++i)
cout << v[i] << " ";
cout << "\n";
}
int main()
{
int n, v[1001];
citire(n, v);
inloc(n,v);
afisare(n, v);
}