Primos permutables
Un primo permutable es un número primo tal que todos los números obtenidos permutando sus cifras son primos. Por ejemplo, 337 es un primo permutable ya que 337, 373 y 733 son primos.
Definir las funciones
1 2 |
esPrimoPermutable :: Integer -> Bool primosPermutables :: [Integer] |
tales que
- (esPrimoPermutable x) se verifica si x es un primo permutable. Por ejemplo,
1 2 3 |
esPrimoPermutable 97 == True esPrimoPermutable 337 == True esPrimoPermutable 23 == False |
- primosPermutables es la lista de los primos permutables. Por ejemplo,
1 2 |
λ> take 20 primosPermutables [2,3,5,7,11,13,17,31,37,71,73,79,97,113,131,199,311,337,373,733] |
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 25 26 27 28 |
import Data.List (nub, permutations) import Data.Numbers.Primes (primes, isPrime) -- 1ª solución -- =========== esPrimoPermutable :: Integer -> Bool esPrimoPermutable x = all isPrime (permutacionesN x) permutacionesN :: Integer -> [Integer] permutacionesN x = [read ys | ys <- nub (permutations xs)] where xs = show x n = length xs primosPermutables :: [Integer] primosPermutables = [x | x <- primes, esPrimoPermutable x] -- 2ª solución -- =========== esPrimoPermutable2 :: Integer -> Bool esPrimoPermutable2 = all isPrime . map read . nub . permutations . show primosPermutables2 :: [Integer] primosPermutables2 = filter esPrimoPermutable2 primes |
Referencias
- Permutable prime en Wikipedia.
- Sucesión A003459 de la OEIS.
4 Comentarios