fbpx

Problema #3270 – Suma – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se citește un număr natural n. Să se determine suma divizorilor pari ai săi.

Date de intrare

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

Date de ieşire

Programul afișează pe ecran numărul S, reprezentând suma divizorilor pari ai lui n.

Restricţii şi precizări

  • 0<n<2310<n<231

Exemplu

Intrare

30

Ieșire

48

Explicație

Divizorii pari lui 30 sunt 2, 6, 10 și 30. Suma lor este 48.

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin >> n;
    long long int sum = 0;
    for(int d = 1; d * d <= n; ++d){
        if(n % d == 0){
            if(d % 2 == 0)
                sum += d;
            if(n / d % 2 == 0)
                sum += n/d;
        }
        if(d * d == n && d % 2 == 0)
            sum -= d;
    }
    cout << sum;
    return 0;
}
Comentarii

S-ar putea sa iti placa