# PBinfo #1020 – MaxPrim – Rezolvare C++

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

## Enunț

Cerința
Se consideră un șir cu n elemente, numere naturale. Folosind metoda Divide et Impera, determinați cel mai mare element prim din acest șir.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.

Date de ieșire
Programul va afișa pe ecran numărul M, cel mai mare element prim al șirului.

Restricții și precizări

1 ≤ n ≤ 1000
elementele șirului vor fi mai mici decât 1.000.000
se garantează că în șir apare cel puțin un element prim
se recomandă folosirea metodei Divide et Impera

Exemplu:
Intrare

6
4 1 8 4 3 5 
Ieșire

5

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int n , v[1005];
int prim(int n)
{
	if(n < 2)
		return 0;
	if(n > 2 && n % 2 == 0)
		return 0;
	for(int d = 3 ; d * d <= n ; d += 2)
		if(n % d == 0)
			return 0;
	return 1;
}
int Max(int st, int dr)
{
	if(st == dr)
		if(prim(v[st]))
			return v[st];
		else
			return -1;
	else
	{
		int mij = (st + dr) / 2;
		int x = Max(st ,mij); 
		int y = Max( mij + 1 , dr);
		if(x > y)
			return x;
		else
			return y;
	}
}
int main(){
	cin >> n;
	for(int i = 0 ; i < n ; i ++)
		cin >> v[i];
	cout << Max(0 , n - 1);
	return 0;
}
```

## Resurse

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