361
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