# PBinfo #4355 – SumPrimDEI – 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 suma elementelor prime 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 s, reprezentând suma elementelor prime din șir.

Restricții și precizări

1 ≤ n ≤ 1000
elementele șirului vor fi mai mici decât 1.000.000
se recomandă folosirea metodei Divide et Impera

Exemplu:
Intrare

6
4 11 8 4 3 5 
Ieșire

19
Explicație
Numerele prime din șirul citit sunt  11, 3 și 5, iar suma lor este 19.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int prim(int n)
{
    if(n==0 || n==1) return 0;
    if(n==2) return 1;
    if(n%2==0) return 0;
    for(int d=3;d*d<=n;d=d+2)
        if(n%d==0) return 0;
    return 1;
}
int sum(int A[], int s, int d)
{
    if(s==d) if(prim(A[s])) return A[s];
             else return 0;
    else
    {
        int m=(s+d)/2;
        return sum(A,s,m)+sum(A,m+1,d);
    }
}
int main()
{
    int A[1001],n;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>A[i];
    cout<<sum(A,1,n);
    return 0;
}
```

## Resurse

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