Copyright | Exercitium (13-06-14) |
---|---|
License | GPL-3 |
Maintainer | JoseA.Alonso@gmail.com |
Safe Haskell | Safe |
Language | Haskell2010 |
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.
Documentation
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]
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.