👤

Cerinţa(fara vectori ms)
Să se scrie un program care citeşte de la tastatură un număr natural n şi apoi un şir de n numere naturale şi determină cel mai mare număr prim din șir și de câte ori apare.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale.

Date de ieşire
Programul afișează pe ecran numerele M nrap, separate printr-un spațiu, reprezentând cel mai mare număr prim din șir și de câte ori apare acest număr în șir.

Restricţii şi precizări
0 < n < 1000
cele n numere citite vor fi mai mici decât 2.000.000.000
pentru toate testele de evaluare, datele de intrare vor conține cel puțin un număr prim


Răspuns :

Problema e simpla.
Iei ca variabile de tip întreg n, x, max=-1, c =0, p=1
Și o variabila bool prim = false;
Faci o singura parcurgere ceva de genul :
for (int i = 0; i < n; i++)
Și in for citești un x
Verifici dacă e prim cu secventele astea (sunt pe telefon asa ca nu ți le scriu în c++)
prim = true;
If (x < 2)
Prim = false;
Parcurgem posibili divizori
For (int d = 2 ; d <= sqrt(x) & &prim;d++)
If (x%d==0)
Prim = false;

Și acum faci maximum cu grija. (tot în primul for e și asta)
If (prim)
If (max == x)
p++;
Else if (max < x)
{ max =x; p = 1;}

Aici se termina for.

Și afișezi max și p.
Succes!