Informatică, întrebare adresată de andreimaria28, 9 ani în urmă

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.000

Răspunsuri la întrebare

Răspuns de ionutg38
3
#include <iostream> #include <cassert> using namespace std; void citire(int &n,long long int a[]) { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; } int prim(long long int n) { if(n==0||n==1) return 0; else if(n%2==0&&n!=2) return 0; else for(int d=3;d*d<=n;d=d+2) if(n%d==0) return 0; return 1; } int urmatorul_prim(long long int n) { while(1) { n++; if(prim(n)) { return n; break; } } } void inloc(long long int &n) { n=urmatorul_prim(n); } void afisare(int n,long long int a[]) { for(int i=0;i<n;i++) cout<<a[i]<<' '; } int main() { int n; long long int a[1000]; citire(n,a); for(int i=0;i<n;i++) if(!prim(a[i])) inloc(a[i]); afisare(n,a); return 0; }
Alte întrebări interesante