Números somirp

Un número omirp es un número primo que forma un primo distinto al invertir el orden de sus dígitos.

Definir las funciones

tales que

  • (esOmirp n) se verifica si n es un número omirp. Por ejemplo,

  • omirps es la lista de los números omirps. Por ejemplo,

  • (nOmirpsIntermedios n) es la cantidad de números omirps entre el n-ésimo número omirp y el obtenido al invertir el orden de sus dígitos. Por ejemplo,

Nota: Este ejercicio ha sido propuesto por Ángel Ruiz Campos.

Soluciones

4 Comentarios

  1. <

    pre lang=»haskell»>
    import Data.Numbers.Primes

    esOmirp :: Integer -> Bool
    esOmirp n = n /= inv && isPrime inv
    where
    inv = (read . reverse . show) n

    omirps :: [Integer]
    omirps = filter esOmirp primes

    nOmirpsIntermedios :: Int -> Int
    nOmirpsIntermedios n = abs (n – length (takeWhile (<inv) omirps)) – 1
    where
    inv = (read . reverse . show) (omirps!!n)

Leave a Reply to Chema CortésCancel reply