# PBinfo #4599 – Suma_divizorilor_neprimi – Rezolvare C++

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

## Enunț

Cerinţa
Se citește de la tastatură un număr natural cu cel mult nouă cifre. Să se calculeze și să se afișeze suma divizorilor neprimi ai lui n.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran suma divizorilor neprimi ai lui n.

Restricţii şi precizări

2 ≤ n < 1.000.000.000

Exemple
Intrare

12
Ieşire

23
Explicație
Divizorii neprimi ai lui 12 sunt 1, 4, 6 și 12, iar suma lor este 23.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
long long sumdiv(int n)
{
    long long s=0;
    for(int d=1;d*d<=n;d++)
        if(n%d==0)
        {
            s=s+d;
            if(d*d!=n) s=s+n/d;
        }
    return s;
}
int sumfact(int n)
{
    int s=0,d=2;
    while(n>1)
    {
        if(n%d==0)
        {
            s=s+d;
            while(n%d==0) n=n/d;
        }
        else d++;
        if(d*d>n) d=n;
    }
    return s;
}
int main()
{
    int n;
    cin>>n;
    cout<<sumdiv(n)-sumfact(n);
    return 0;
}
```

## Resurse

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