Números con todos sus dígitos primos
La sucesión A046034 de la OEIS (The On-Line Encyclopedia of Integer Sequences) está formada por los números tales que todos sus dígitos son primos. Los primeros términos de A046034 son
2,3,5,7,22,23,25,27,32,33,35,37,52,53,55,57,72,73,75,77,222,223
Definir la constante
numerosDigitosPrimos :: [Int]
cuyos elementos son los términos de la sucesión A046034. Por ejemplo,
λ> take 22 numerosDigitosPrimos [2,3,5,7,22,23,25,27,32,33,35,37,52,53,55,57,72,73,75,77,222,223]
Soluciones
numerosDigitosPrimos :: [Int] numerosDigitosPrimos = [n | n <- [2..], digitosPrimos n] -- (digitosPrimos n) se verifica si todos los dígitos de n son -- primos. Por ejemplo, -- digitosPrimos 352 == True -- digitosPrimos 362 == False digitosPrimos :: Int -> Bool digitosPrimos n = all (`elem` "2357") (show n) -- 2ª definición de digitosPrimos: digitosPrimos2 :: Int -> Bool digitosPrimos2 n = subconjunto (cifras n) [2,3,5,7] -- (cifras n) es la lista de las cifras de n. Por ejemplo, cifras :: Int -> [Int] cifras n = [read [x] | x <-show n] -- (subconjunto xs ys) se verifica si xs es un subconjunto de ys. Por -- ejemplo, subconjunto :: Eq a => [a] -> [a] -> Bool subconjunto xs ys = and [elem x ys | x <- xs]