fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. // Funcție pentru descompunerea unui număr în factori primi
  6. vector<pair<int, int>> descompuneInFactoriPrimi(int n) {
  7.  
  8. vector<pair<int, int>> factori;
  9. int divisor = 2;
  10.  
  11. while (n > 1) {
  12. int count = 0;
  13. while (n % divisor == 0) {
  14. n /= divisor;
  15. count++;
  16. }
  17. if (count > 0) {
  18. factori.push_back({divisor, count});
  19. }
  20. divisor++;
  21. // Optimizare: verificăm doar până la √n
  22. if (divisor * divisor > n) {
  23. if (n > 1) {
  24. factori.push_back({n, 1});
  25. }
  26. break;
  27. }
  28. }
  29. return factori;
  30. }
  31.  
  32. int main() {
  33. int numar;
  34. cout << "Introduceti un numar: ";
  35. cin >> numar;
  36.  
  37. if (numar <= 1) {
  38. cout << "Numarul trebuie sa fie mai mare decat 1!" << endl;
  39. return 0;
  40. }
  41.  
  42. auto factori = descompuneInFactoriPrimi(numar);
  43.  
  44. cout << "Descompunerea in factori primi este: ";
  45. for (size_t i = 0; i < factori.size(); ++i) {
  46. cout << factori[i].first << "^" << factori[i].second;
  47. if (i < factori.size() - 1) {
  48. cout << " * ";
  49. }
  50. }
  51. cout << endl;
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 5288KB
stdin
100
stdout
Introduceti un numar: Descompunerea in factori primi este: 2^2 * 5^2