396
Cerinţa
Să se scrie un program care citește un șir de n numere naturale şi determină numărul din şir care are număr maxim de factori primi.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale nenule, separate prin spaţii.
Date de ieşire
Programul afișează pe ecran numărul x, numărul din şir cu număr maxim de factori primi.
Restricţii şi precizări
0 < n < 1001- cele
nnumere citite vor fi mai mici decât2.000.000.000 - dacă în şir există mai multe numere cu număr maxim de factori primi, se va afişa cel mai mic dintre acestea
Exemplu
Intrare
5 72 30 12 75 17
Ieșire
30
Explicație
30 are trei factori primi. Celelalte numere au mai puţini factori primi.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, rez = 0, nrmax = 0;
cin >> n;
for(int i = 1; i <= n; ++i){
int x;
cin >> x;
int cx = x;
int cnt = 0;
int d = 2;
while(x > 1){
int p = 0;
while(x % d == 0)
p ++, x /= d;
if(p)
cnt++;
d++;
if(d * d > x)
d = x;
}
if(cnt > nrmax)
nrmax = cnt, rez = cx;
else if(cnt == nrmax && cx < rez)
rez = cx;
}
cout << rez;
return 0;
}
Comentarii