Potencias de primos con exponentes potencias de dos
Se llaman potencias de Fermi-Dirac a los números de la forma p^(2^k), donde p es un número primo y k es un número natural.
Definir la sucesión
1 |
potencias :: [Integer] |
cuyos términos sean las potencias de Fermi-Dirac ordenadas de menor a mayor. Por ejemplo,
1 2 3 |
take 14 potencias == [2,3,4,5,7,9,11,13,16,17,19,23,25,29] potencias !! 60 == 241 potencias !! (10^6) == 15476303 |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 |
import Data.Numbers.Primes (primes) potencias :: [Integer] potencias = 2 : mezcla (tail primes) (map (^2) potencias) -- (mezcla xs ys) es la lista obtenida mezclando las dos listas xs e ys, -- que se suponen ordenadas y disjuntas. Por ejemplo, -- ghci> take 15 (mezcla [2^n | n <- [1..]] [3^n | n <- [1..]]) -- [2,3,4,8,9,16,27,32,64,81,128,243,256,512,729] mezcla :: Ord a => [a] -> [a] -> [a] mezcla (x:xs) (y:ys) | x < y = x : mezcla xs (y:ys) | x > y = y : mezcla (x:xs) ys |
Utilizando la mezcla de infinitas listas infinitas ordenadas: