Primos de Kamenetsky
Un número primo se dice que es un primo de Kamenetsky si al anteponerlo cualquier dígito se obtiene un número compuesto. Por ejemplo, el 5 es un primo de Kamenetsky ya que 15, 25, 35, 45, 55, 65, 75, 85 y 95 son compuestos. También lo es 149 ya que 1149, 2149, 3149, 4149, 5149, 6149, 7149, 8149 y 9149 son compuestos.
Definir la sucesión
1 |
primosKamenetsky :: [Integer] |
tal que sus elementos son los números primos de Kamenetsky. Por ejemplo,
1 |
take 5 primosKamenetsky == [2,5,149,401,509] |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 |
import Data.Numbers.Primes (isPrime, primes) primosKamenetsky :: [Integer] primosKamenetsky = [x | x <- primes , esKamenetsky x] esKamenetsky :: Integer -> Bool esKamenetsky x = all (not . isPrime) [read (d:xs) | d <- "123456789"] where xs = show x |
Referencias
- Sucesión A155762 de la OEIS.
- Anteponer un dígito a un primo en «Números y algo más».
Simplificando un poco:
Corregida