2015, suma de dígitos y número de divisores
Una propiedad del 2015 es que la suma de sus dígitos coincide con el número de sus divisores; en efecto, la suma de sus dígitos es 2+0+1+5=8 y tiene 8 divisores (1, 5, 13, 31, 65, 155, 403 y 2015).
Definir la sucesión
1 |
especiales :: [Int] |
formada por los números n tales que la suma de los dígitos de n coincide con el número de divisores de n. Por ejemplo,
1 |
take 12 especiales == [1,2,11,22,36,84,101,152,156,170,202,208] |
Usar la sucesión para responder las siguientes cuestiones
- ¿Cuántos años hasta el 2015 inclusive han cumplido la propiedad?
- ¿Cuál fue el anterior al 2015 que cumplió la propiedad?
- ¿Cuál será el siguiente al 2015 que cumplirá la propiedad?
Nota: La sucesión especiales
es la misma que la A057531 de la OEIS (On-Line Encyclopedia of Integer Sequences).
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
especiales :: [Int] especiales = [n | n <- [1..], especial n] especial :: Int -> Bool especial n = sum (digitos n) == length (divisores n) digitos :: Int -> [Int] digitos n = [read [d] | d <- show n] divisores :: Int -> [Int] divisores n = [x | x <- [1..n], n `mod` x == 0] -- El cálculo de número de años hasta el 2015 inclusive que han cumplido -- la propiedad es -- ghci> length (takeWhile (<=2015) especiales) -- 59 -- El cálculo del anterior al 2015 que cumplió la propiedad es -- ghci> last (takeWhile (<2015) especiales) -- 2006 -- El cálculo del siguiente al 2015 que cumplirá la propiedad es -- ghci> head (dropWhile (<=2015) especiales) -- 2101 |