Árbol de factorización

Los divisores medios de un número son los que ocupan la media entre los divisores de n, ordenados de menor a mayor. Por ejemplo, los divisores de 60 son [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60] y sus divisores medios son 6 y 10. Para los números que son cuadrados perfectos, sus divisores medios de son sus raíces cuadradas; por ejemplos, los divisores medios de 9 son 3 y 3.

El árbol de factorización de un número compuesto n se construye de la siguiente manera:

  • la raíz es el número n,
  • la rama izquierda es el árbol de factorización de su divisor medio menor y
  • la rama derecha es el árbol de factorización de su divisor medio mayor

Si el número es primo, su árbol de factorización sólo tiene una hoja con dicho número. Por ejemplo, el árbol de factorización de 60 es

Definir la función

tal que arbolFactorizacion n es el árbol de factorización de n. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

Un comentario

  1. Para resolver este problema, podemos definir una función arbolFactorizacion que utilice recursión. Si el número es primo, entonces el árbol de factorización es simplemente una hoja con ese número. Si no es primo, entonces podemos encontrar sus divisores medios y crear un nodo con ese número y sus árboles de factorización como hijos.

    Aquí te dejo una implementación en Haskell de la función arbolFactorizacion:

Escribe tu solución