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 |
¿Cuántos años hasta el 2015 inclusive han cumplido la propiedad?
59
¿Cuál fue el anterior al 2015 que cumplió la propiedad?
2006
¿Cuál será el siguiente al 2015 que cumplirá la propiedad?
2101