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]]