fbpx

Problema #3352 – Factori1 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau două numere naturale. Afișați numărul pentru care suma factorilor primi este mai mare. Dacă cele două numere au aceași sumă a factorilor primi, afișați-l pe cel mai mic.

Date de intrare

Programul citește de la tastatură două numere naturale.

Date de ieșire

Programul va afișa pe ecran numărul cerut.

Restricții și precizări

  • cele două numere citite vor fi mai mici decât 1.000.000.000

Exemplu

Intrare

36 26

Ieșire

26

Explicație

Factorii primi ai lui 36 sunt 2 și 3, cu suma 5. Factorii primi ai lui 26 sunt 2 și 13, cu suma 15. Rezultatul este 26, pentru că are suma factorilor primi mai mare.

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

int prim(int x){
    int d = 2, cnt = 0;
    while(x > 1){
        int p = 0;
        while(x % d == 0)
            p++, x/=d;
        if(p)
            cnt+=d;
        d++;
        if(d * d > x)
            d = x;
    }
    return cnt;
}

int main(){
    int x, y;
    cin >> x >> y;
    if(prim(x) > prim(y))
        cout << x;
    else if(prim(x) < prim(y))
        cout << y;
    else
        cout << min(x, y);
    return 0;
}
Comentarii

S-ar putea sa iti placa