# PBinfo #111 – nrfact – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

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 n numere citite vor fi mai mici decât 2.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.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main() {
    int n, temp, maxim = 1, nrmaxim = 0;
    cin >> n;
    for(int i = 1; i <= n ; ++i) {
        cin >> temp;
        int nrfact = 0, d = 2, copie = temp;
        while (temp != 1) {
            if (temp % d == 0) {
                nrfact++;
                while (temp % d == 0)
                    temp = temp / d;
            } d++;
            if (d * d > temp && temp > 1) {
                temp = 1;
                nrfact++;
            }
        } if (nrfact > nrmaxim) {
            nrmaxim = nrfact;
            maxim = copie;
        } else if (nrfact == nrmaxim)
                if (copie < maxim)
                    maxim = copie;
    } cout << maxim << endl;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/111)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/111/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-111/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
