Se cere să se scrie o funcție care primește ca parametru un vector de n numere întregi și pune în vectorul original pe primele poziții toate numerele prime pe care le-a găsit în vector. Valorile de pe celelalte poziții nu contează. Funcția va returna numărul de numere prime găsite. Pentru testarea dacă un număr este prim, se va folosi o funcție care primește ca parametru acel număr și va returna 0 sau 1.
Exemplu: pentru vectorul v={8,4,7,9,3,10}, funcția transforma(v,6) va returna 2 și vectorul v va avea pe primele poziții valorile {7,3}.
boiustef:
de unde e problema ?
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
using namespace std;
int prim(int m)
{
int p=1;
if (m<2) p=0;
else
{
if (m==2) p=1;
if (m>2)
{
if (m%2==0) p=0;
else
{
for (int j=3; j*j<=m; j+=2)
if (m%j==0) { p=0; break;}
}
}
}
return p;
}
int transforma(int v[], int n)
{
int k=-1, prime=0;
for (int i=0; i<n; ++i)
{
if (prim(v[i]))
{
++k; v[k]=v[i]; ++prime;
}
}
return prime;
}
int main()
{
int n, i, v[100];
cin >> n;
for (i=0; i<n; ++i)
cin >> v[i];
cout << transforma(v, n) << "\n";
for (i=0; i<n; ++i)
cout << v[i] << " ";
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă