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.