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?
Răspunsuri la întrebare
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!
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