Factorice cualquier número con Javascript: la forma funcional
Fondo
Cuando estaba en la escuela primaria, después de aprender aritmética básica, nos llevaron a una lección sobre factorización, una técnica para encontrar elementos de multiplicación que pueden formar el número objetivo. Lo que hicimos entonces fue probar cada número de menor a mayor para ver si cada uno de ellos era un elemento de la multiplicación del número objetivo, o en otras palabras, al dividirlo entre él daba un número entero. Por ejemplo, cuando buscamos todos los números de factor de 62, probamos 2 (entero), 5 (decimal), 7 (decimal), y así sucesivamente. Hasta que encontremos, los únicos factores posibles para el número 62 son 1, 2, 31 y 62. ¿Qué sucede si dejamos este tedioso trabajo a la computadora para obtener los resultados?
Método
Antes de enseñarle a la computadora qué hacer, primero debemos describir cuál fue el proceso manual por el que pasamos para producir esa respuesta. Así es como lo entiendo:
- Crear una serie de números del 1 al N (objetivo)
- Para cada uno de estos números (i), compruebe si (N / i) el resultado es un número entero o no
- Si el resultado es un número entero, coloque (i) en la lista de números de factor para el valor objetivo (N)
Resultado
Cada programador puede usar un proceso diferente para traducir un algoritmo, aunque se basan exactamente en el mismo algoritmo. En este caso, opté por seguir con el paradigma funcional y generé un código como el siguiente:
factorize = num =>
[...Array(num).keys()]
.map(i => i + 1)
.reduce((acc, inc) =>
num % inc === 0 ?
[...acc, inc] : acc
, [])
factorize(62) // get [1, 2, 31, 62]
factorize(123456) // get 28 different numbers
Puede probarlo dando a factorizela función cualquier número con cualquier dígito y obtendrá los resultados esperados. Pero no espere que su computadora no se bloquee cuando se le den grandes números de 9 dígitos o más.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































