282
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