Răspuns:
#include <iostream>
using namespace std;
bool e_prim(int n) {
if (n < 2) return false;
if (n == 2) return true;
if (n % 2 == 0) return false;
for (int d = 3; d * d <= n; d += 2)
if (n % d == 0) return false;
return true;
}
int maxim_prim_divImp(int v[], int i, int s) {
if (i == s) {
if (e_prim(v[s])) return v[s];
return 0;
}
int d1 = maxim_prim_divImp(v, i, (i + s) / 2);
int d2 = maxim_prim_divImp(v, (i + s) / 2 + 1, s);
if (d1 > d2)
return d1;
return d2;
}
int main() {
int n, v[1001],M,s=1;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> v[i];
M=maxim_prim_divImp(v,1,n);
cout<<M;
return 0;
}
Explicație:
100 p pb info