# PBinfo #1434 – Mutare2 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Scrieţi definiţia completă a subprogramului C/C++ modificare, care are doi parametri, v şi n, prin care primeşte un tablou unidimensional cu maximum 10000 de numere naturale nenule şi, respectiv, numărul de elemente din tablou. Subprogramul rearanjează elementele tabloului astfel încât toate valorile prime să se afle pe primele poziţii, iar valorile care nu sunt prime, în continuarea celor prime. 
Ordinea în cadrul ambelor secvenţe (numerele prime şi cele care nu sunt prime), poate fi oricare. 

Restricții și precizări

1 ≤ n ≤ 10000
numele subprogramului este modificare
parametrii sunt, în această ordine: v, n
fiecare element al vectorului este un număr natural din intervalul \([1,2 \cdot 10^9]\)
elementele vectorului v sunt indexate de la 0

Exemplu:
Pentru n=10 şi v=(42,36,7,53,27,15,29,40,39,2), după apel, v ar putea fi (7,53,29,2,27,15,42,40,39,36).

Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

## Cod sursă C++

```cpp
bool numarPrim(int numar) {
    if (numar % 2 == 0 || numar < 3)
        return (numar == 2);
    for (int d = 3; d * d <= numar; d = d + 2)
        if (numar % d == 0) return false;
	return true;
}
void modificare(int a[], int n) {
    int j = 0;
    for (int i = 0; i < n; i++) {
        if (numarPrim(a[i])) {
            int contor = a[i];
            a[i] = a[j], a[j++] = contor;
        }
    }
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1434)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1434/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1434/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
