C++
Napisz procedurę pierwsze_poz(n, poz1, poz2) wyświetlającą liczby pierwsze na pozycji poz1 oraz poz2 z zakresu <1..n>.
Jeśli liczb nie ma pojawia się stosowny komunikat.


Odpowiedź :

Odpowiedź:

void pierwsze_poz(int n, int poz1, int poz2)

{

   vector<bool>V(n+1,1);

   V[0] = V[1] = 0;

   int i,j;

   float p = sqrt(n);

   for(i = 2;i <= p;i++)

       if(V[i])

           for(j = i * i;j <=n;j+=i)

               V[j] = 0;

   if(V[poz1] + V[poz2] > 0)

   {

       if(V[poz1])

           cout<<"Pozycja "<<poz1<<" zawiera liczbę pierwsza: "<<poz1<<endl;

       else

           cout<<"Pozycja "<<poz1<<" nie zawiera liczby pierwszej"<<endl;

       if(V[poz2])

           cout<<"Pozycja "<<poz2<<" zawiera liczbe pierwsza: "<<poz2<<endl;

       else

           cout<<"Pozycja "<<poz2<<" nie zawiera liczby pierwszej"<<endl;

   }

   else

       cout<<"brak liczb pierwszych";

}

Wyjaśnienie: