Informatică, întrebare adresată de togoeradu, 8 ani în urmă

Salutare! Am si eu nevoie de ajutor la problema "stergere" de pe pbinfo. Aceasta imi cere sa sterg elementele prime dintr-un vector. Din pacate, primesc doar 80 de puncte pe algoritmul meu care este cel de mai jos. Va rog sa imi specificati clar ce trebuie sa modific la el (algoritm de verificare a unui nr prim etc ) pentru a imi da 100 de puncte


boiustef: e destul de eficient... ramane sa-l studiezi si daca il intelegi poti incadra logica din functia bool prim in cadrul functiei main
boiustef: daca il intelegi, la sigur il vei aplica nu o data...
togoeradu: ok, ms
boiustef: daca apar intrebari... adreseaza.te
togoeradu: ok
boiustef: vezi, am evitat vectorul si operatiile din el
togoeradu: vad, mie mi se pare ciudat
togoeradu: pentru nivelul la care sunt
boiustef: anume functia prim???
boiustef: pot modifica codul pentru a nu folosi functia prim

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

#include <iostream>

using namespace std;

unsigned int  n, i, num;

bool prim(unsigned int m)

{

   unsigned int p=1, j;

   if (m==0 || m==1) p=0;

   if (m>2)

   {

       if (m%2==0) p=0;

       else

       {

           for (j=3; j*j<=m; j+=2)

               if (m%j==0) { p=0; break; }

       }

   }

  return p;

}

int main()

{

   cin >> n;

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

   {

       cin >> num;

       if (!prim(num)) cout << num << " ";

   }

}

Explicație:

candva am realizat si varianta cu vector... poate te va interesa... dar la nivelul care te afli e important sa vezi abordarea problemei din diferite unghiuri.....

#include <iostream>

#include <vector>

using namespace std;

int main()

{

int n;

cin >> n;

long long x[n+1];

for(int i = 0; i < n; i++)

{

cin >> x[i];

}

for(int i = n-1; i >= 0; i--)

{

int div = 0;

for(int j = 2; j*j <= x[i] && div == 0; j++)

if(x[i] % j == 0)

div++;

if(div == 0 && x[i] != 1 && x[i]!=0)

{

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

{

x[j] = x[j+1];

}

--n;

}

}

for(int i = 0; i < n; i++)

cout << x[i] << " " ;

return 0;

}

Alte întrebări interesante