fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. // Función para factorizar un número en primos
  5. std::vector<int> factorizar(int n) {
  6. std::vector<int> primos;
  7. int i = 2;
  8. while (i * i <= n) {
  9. if (n % i == 0) {
  10. primos.push_back(i);
  11. n /= i;
  12. } else {
  13. i++;
  14. }
  15. }
  16. if (n > 1) {
  17. primos.push_back(n);
  18. }
  19. return primos;
  20. }
  21.  
  22. // Función para calcular el número de divisores de un número
  23. int contarDivisores(int n) {
  24. std::vector<int> primos = factorizar(n);
  25. int exponentes[primos.size()];
  26. for (int i = 0; i < primos.size(); i++) {
  27. exponentes[i] = 0;
  28. }
  29. for (int i = 0; i < primos.size(); i++) {
  30. int p = primos[i];
  31. while (n % p == 0) {
  32. exponentes[i]++;
  33. n /= p;
  34. }
  35. }
  36. int divisores = 1;
  37. for (int i = 0; i < primos.size(); i++) {
  38. divisores *= (exponentes[i] + 1);
  39. }
  40. return divisores;
  41. }
  42.  
  43. int main() {
  44. int n;
  45. std::cout << "Ingrese un número: ";
  46. std::cin >> n;
  47. int divisores = contarDivisores(n);
  48. std::cout << "El número de divisores de " << n << " es: " << divisores << std::endl;
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5276KB
stdin
12
stdout
Ingrese un número: El número de divisores de 12 es: 6