fbpx

Problema #3353 – Factori2 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau două numere naturale. Afișați numărul pentru care produsul factorilor primi este mai mare. Dacă cele două numere au același produs al 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 produsul 6. Factorii primi ai lui 26 sunt 2 și 13, cu produsul 26. Rezultatul este 26, pentru că are produsul factorilor primi mai mare.

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

long long desc(long long n){
    long long prod = 1;
    long long d = 2;
    while(n > 1){
        int p = 0;
        while(n % d == 0)
            n/=d, p++;
        if(p)
            prod*= d;
        d++;
        if(d * d > n)
            d = n;
    }
    return prod;
}

int main(){
    long long a, b;
    cin >> a >> b;
    long long prod1 = desc(a);
    long long prod2 = desc(b);
    if(prod1 > prod2)
        cout << a;
    else if(prod1 == prod2)
        cout << min(a, b);
    else
        cout << b;
}
Comentarii

S-ar putea sa iti placa