Subprogramul f, cu un parametru:

- primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre (a>1)

- returnează cel mai mic divizor prim al valorii parametrului a.

Exemplu: pentru valoarea 45 a parametrului a, subprogramul va returna valoarea 3 deoarece a=32 *5, iar cel mai mic divizor prim al său este 3.

a) Scrieţi definiţia completă a subprogramului f. (4p.)

b) Scrieţi un program C/C++ care să citească de la tastatură un număr natural nenul n (n≤100) şi un şir de n numere naturale de cel mult 8 cifre fiecare, toate numerele din şir fiind strict mai mari decât 1. Folosind apeluri utile ale subprogramului f, programul va determina şi va afişa pe ecran toate numerele prime din şirul citit. Numerele determinate se vor afişa pe o singură linie a ecranului, separate prin câte un spaţiu. Dacă nu există astfel de numere se va afişa pe ecran mesajul NU EXISTA.

Exemplu: pentru n=8, şirul: 1125, 2, 314, 101, 37, 225, 15, 12 se va afişa: 2 101 37

#include <iostream.h>

unsigned long x[100],y[100];

unsigned n;

unsigned long f(unsigned long a)

{ unsigned long d=2;

while (a%d) d++;

return d;

}

void main()

{ unsigned i,m,inv;

unsigned long aux;

do

{ cout<<"n=";

cin>>n;

}

while (n<1 || n>100);

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

do

{ cout<<"x["<<i<<"]=";

cin>>x[i];

}

while (x[i]<2 || x[i]>99999999);

m=0;

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

if (f(x[i])==x[i])

y[m++]=x[i];

if (m==0)

cout<<"NU EXISTA";

else

for(i=0;i<m;i++)

cout<<y[i]<<' ';

}