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

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


JolieJulie: Pot sa fac cu functii ?
antoniaellenapbv5w3: nu dar daca vrei iti arat ce am facut pana acum
JolieJulie: da,de ce nu ? Ai facut tot si ai luat 0 pcte sau ai facut partial ?
antoniaellenapbv5w3: #include
using namespace std;
int n,i,k,x,j,maxim,m,p;
int main() {
cin>>n;
for(i=1;i<=n;i++){
k=0;
cin>>x;
for(j=1;j<=x/j;j++){
if(x%j==0)
k++;
if(k==1){
if(maxim maxim=x;
m++;
}
else{
if(maxim==x)
m++;
else
m=0;
}
}
}
}

cout<}

Răspunsuri la întrebare

Răspuns de alexdeveloper0
1

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!

Alte întrebări interesante