Exercitium1-0.1.0.0: Problemas de Exercitium (Volumen 1)

CopyrightExercitium (13-06-14)
LicenseGPL-3
MaintainerJoseA.Alonso@gmail.com
Safe HaskellSafe
LanguageHaskell2010

Orbita_prima

Description

Órbita prima

La órbita prima de un número n es la sucesión construida de la siguiente forma:

  • si n es compuesto su órbita no tiene elementos
  • si n es primo, entonces n está en su órbita; además, sumamos n y sus dígitos, si el resultado es un número primo repetimos el proceso hasta obtener un número compuesto.

Por ejemplo, con el 11 podemos repetir el proceso dos veces

  • 3 = 11+1+1
  • 17 = 13+1+3

Así, la órbita prima de 11 es 11, 13, 17.

Definir la función

orbita :: Integer -> [Integer]

tal que (orbita n) es la órbita prima de n. Por ejemplo,

>>> orbita 11
[11,13,17]
>>> orbita 59
[59,73,83]

Calcular el menor número cuya órbita prima tiene más de 3 elementos.

Synopsis

Documentation

orbita :: Integer -> [Integer] Source #

1ª definición (por recursión)

esPrimo :: Integer -> Bool Source #

(esPrimo n) se verifica si n es primo. Por ejemplo,

>>> esPrimo 17
True
>>> esPrimo 21
False

cifras :: Integer -> [Integer] Source #

(cifras n) es la lista de las cifras de n. Por ejemplo,

>>> cifras 32542
[3,2,5,4,2]

orbita2 :: Integer -> [Integer] Source #

2ª definición (con iterate)

prop_equiv_orbita :: Integer -> Bool Source #

(prop_equiv_orbita n) se verifica si las definiciones de orbita son equivalentes sobre n. Por ejemplo,

>>> all prop_equiv_orbita [11, 59]
True

verifica_equiv_orbita :: IO () Source #

Comprueba la equivalencia de las definiciones de orbita.

>>> verifica_equiv_orbita
+++ OK, passed 100 tests.