Se citeste un vector cu n nr. naturale de max. 2 cifre, sa se afiseze primul nr prim care nu apare printre nr. citite. cu vector de frecventa si sa se foloseasca subprogram.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
bool prim(int m)
{
int d, p=1;
for (d=2; d*d<=m; d++)
if (m%d==0)
{
p=0; break;
}
return p;
}
int main()
{
int n, num, gasit=0, v[100]={0};
cin >> n;
for (int i=0; i<n; i++)
{
cin >> num;
++v[num];
}
if (v[2]==0) { gasit=1; cout << 2; }
else
{
for (int i=3; i<100; i+=2)
{
if (prim(i) && v[i]==0)
{
gasit=1;
cout << i;
break;
}
}
if (gasit==0)
cout << "nu exista...";
}
}
Explicație:
Se declara vectorul de frecventa v[100], in care se inregistreaza frecventa de aparitie a numerelor citite, care se cunoaste ca sunt <100
De exemplu daca se introduc numerele 1 2 3 6 6 3 8 3 2, atunci v[1] devine =1, v[2]=2 (adica s-au citit doi de 2), v[3]=3, v[6]=2, v[8]=1, celelate elemente ale vectorului raman zerouri.
La Functia prim am cautat prime intre numerele impare, deoarece am cercetat pe 2 aparte.