392
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