Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

Cerinţa
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
Exemplu
Intrare

5
8 7 11 9 11
Ieșire

11 2
#include

using namespace std;

int main()
{
int n,i,j,a,s=0,M=2,nrap=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a;
for(j=1;j<=a;j++)
{
if(a%j==0)
s=s+1;
}
if(s==2&&a>M)
{
M=a;
nrap++;
}
s=0;
}
cout< return 0;
}
Ce gresesc?


boiustef: Ceva aici nu e bn...
if(s==2&&a>M)
{
M=a;
nrap++;
}
daca gasesti un nou M, nrap tr sa-i dai 1, iar daca se repeta M atunci cresti nrap
Utilizator anonim: Ok. Multumesc!

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

using namespace std;

int prim (int n)

{

   if (n==0 || n==1) return 0;

   else {

      int d=1,i;

     for (i=2;i*i<=n && d;++i){

       if (n%i==0) d=0;

     }

     if (d==1) return 1;

     else return 0;

   }

}

int main()

{

   int n, a, ap=0, primmax, i;

   cin >> n >> a;

   i=1;

   while (!prim(a))

   {

       ++i; cin >> a;

   }

   primmax=a; ap=1;

   while (i<n)

   {

       ++i; cin >> a;

       if (prim(a))

           {

             if (a>primmax) { primmax=a; ap=1; }

             else if (a==primmax) ++ap;

           }

   }

   cout << primmax << " " << ap << endl;

   return 0;

}

Explicație:

Eu asa am vazut rezolvarea...

sepoate de evitat subprogram..

Cerceteaza si la dorinta modifica codul... Succese!


Utilizator anonim: Multumesc!
Alte întrebări interesante