👤

Ma poate ajuta cineva cu o problema pe pb-info. Este problema 510:

Cerința
Se dă un vector cu n elemente, numere naturale. Afișați în ordine crescătoare valorile prime din acest vector.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.

Date de ieșire
Programul va afișa pe ecran valorile prime din vector, în ordine crescătoare, separate prin exact un spațiu.

Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000


Răspuns :

#include<iostream>

using namespace std;

int main()

{

   int n, prim, v[1001], i, j, div;

   cin>>n;

   for(i=1;i<=n;i++)

   cin>>v[i];

   for(i=1;i<n;i++)

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

   if(v[i]>v[j]) {

       int aux=v[i];

       v[i]=v[j];

       v[j]=aux;

   }

   for(i=1;i<=n;i++)

   {

       prim=1;

       if(v[i]<2) prim=0;

       if(v[i]>2) {

       if(v[i]%2==0) prim=0;

       else {

       for(div=3;div*div<=v[i];div+=2)

       if(v[i]%div==0) { prim=0; break; }}}

       if(prim==1) cout<<v[i]<<" ";

   }

}