Se introduce de la tastatură un număr prim p şi se citesc pe rând de la tastatură mai multe numere naturale până când se citeşte numărul O. Să se determine numărul maxim n astfel încât pn să dividă produsul numerelor naturale introduse de la tastatură, fără să se calculeze produsul acestor numere. 4

#include <iostream>

using namespace std;

int main() {

    int p, numar, max_exponent = 0;

    // citim numarul prim p

    cout << „Introduceti numarul prim p: „;

    cin >> p;

    // citim numere pana la intalnirea lui 0

    while (true) {

        cout << „Introduceti un numar natural (sau 0 pentru a iesi): „;

        cin >> numar;

        if (numar == 0) {

            break;

        }

        // calculam exponentul lui p in descompunerea factoriala a numarului

        int exponent = 0;

        while (numar % p == 0) {

            exponent++;

            numar /= p;

        }

        // actualizam maximul de exponenti

        if (exponent > max_exponent) {

            max_exponent = exponent;

        }

    }

    // afisam numarul maxim de exponenti

    cout << „Numarul maxim n este: ” << max_exponent << endl;

    return 0;

}

Pentru a găsi numărul maxim n, trebuie să aflăm care este cel mai mare exponent la care apare numărul p în descompunerea factorială a fiecărui număr natural introdus. Pentru aceasta, putem parcurge fiecare număr introdus, obținem descompunerea sa în factori primi și calculăm exponentul lui p.

În final, putem găsi cel mai mare exponent al lui p care apare cel puțin o dată printre numerele introduse, ceea ce va fi numărul maxim n căutat.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *