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
Răspunsuri la întrebare
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;
}