Máximo producto en la partición de un número
El artículo de esta semana de Antonio Roldán en su blog Números y hoja de cálculo es Máximo producto en la partición de un número (1).
Una partición de un entero positivo n es una forma de descomponer n como suma de enteros positivos. Dos sumas se considerarán iguales si solo difieren en el orden de los sumandos. Por ejemplo, las 11 particiones de 6 (con sus correspondientes productos) son
6 = 6 | 6 = 6 6 = 5 + 1 | 5 x 1 = 5 6 = 4 + 2 | 4 x 2 = 8 6 = 4 + 1 + 1 | 4 x 1 x 1 = 4 6 = 3 + 3 | 3 x 3 = 9 6 = 3 + 2 + 1 | 3 x 2 x 1 = 6 6 = 3 + 1 + 1 + 1 | 3 x 1 x 1 x 1 = 3 6 = 2 + 2 + 2 | 2 x 2 x 2 = 8 6 = 2 + 2 + 1 + 1 | 2 x 2 x 1 x 1 = 4 6 = 2 + 1 + 1 + 1 + 1 | 2 x 1 x 1 x 1 x 1 = 2 6 = 1 + 1 + 1 + 1 + 1 + 1 | 1 x 1 x 1 x 1 x 1 x 1 = 1
Se observa que el máximo producto de las particiones de 6 es 9.
Definir la función
maximoProductoParticiones :: Int -> Int
tal que (maximoProductoParticiones n) es el máximo de los productos de las particiones de n. Por ejemplo,
maximoProductoParticiones 4 == 4 maximoProductoParticiones 5 == 6 maximoProductoParticiones 6 == 9 maximoProductoParticiones 7 == 12 maximoProductoParticiones 8 == 18 maximoProductoParticiones 9 == 27 maximoProductoParticiones 50 == 86093442 maximoProductoParticiones 100 == 7412080755407364 maximoProductoParticiones 200 == 61806308765265224723841283607058 length (show (maximoProductoParticiones (10^7))) == 1590405
Comprobar con QuickChek que los únicos posibles factores de (maximoProductoParticiones n) son 2 y 3.