# PBinfo #4295 – factor_exp_max – Rezolvare C++

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

## Enunț

Cerința
Se dă un număr natural n. Să se determine factorul prim din descompunerea lui n care apare la puterea cea mai mare. Dacă există mai mulți factori care apar la putere maximă, se va afișa cel mai mare dintre ei.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran factorul prim cerut.

Restricții și precizări

n este un număr natural strict mai mare decât 1 și are cel mult 12 cifre (este de tip long long)

Exemplu:
Intrare

7623
Ieșire

11
Explicație
Descompunerea lui n=7623 în factori este 32 * 71 * 112. Sunt doi factori de exponent maxim 2, din care cel mai mare este 11.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main()
{
    long long n, f, fmax = 0;
    int e, emax = 0;
    cin >> n;
    /// factorul prim 2
    e = 0;
    while (n % 2 == 0)
    {
        e++;
        n /= 2;
    }
    if (e > 0)
    {
        fmax = 2;
        emax = e;
    }
    /// factorii impari:
    for (f = 3; f * f <= n; f += 2)
    {
        e = 0;
        while (n % f == 0)
        {
            e++;
            n /= f;
        }
        if (e >= emax)
        {
            emax = e;
            fmax = f;
        }
    }
    if (n > 1 && emax <= 1) fmax = n;
    cout << fmax;
    return 0;
}
```

## Resurse

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