Ir al contenido principal

Mayor resto

El resultado de dividir un número n por un divisor d es un cociente q y un resto r.

Definir la función

mayorResto :: Int -> Int -> (Int,[Int])

tal que (mayorResto n d) es el par (m,xs) tal que m es el mayor resto de dividir n entre x (con 1 ≤ x < d) y xs es la lista de números x menores que d tales que el resto de n entre x es m. Por ejemplo,

mayorResto 20 10  ==  (6,[7])
mayorResto 50 8   ==  (2,[3,4,6])

Nota: Se supone que d > 1.


Soluciones

mayorResto :: Int -> Int -> (Int,[Int])
mayorResto n d = (m, [x | x <- [1..d-1], n `rem` x == m])
    where m = maximum [n `rem` x | x <- [1..d-1]]