La función de Smarandache
La función de Smarandache, también conocida como la función de Kempner, es la función que asigna a cada número entero positivo n el menor número cuyo factorial es divisible por n y se representa por S(n). Por ejemplo, el número 8 no divide a 1!, 2!, 3!, pero sí divide 4!; por tanto, S(8) = 4.
Definir las funciones
1 2 |
smarandache :: Integer -> Integer graficaSmarandache :: Integer -> IO () |
tales que
- (smarandache n) es el menor número cuyo factorial es divisible por n. Por ejemplo,
1 2 3 |
smarandache 8 == 4 smarandache 10 == 5 smarandache 16 == 6 |
- (graficaSmarandache n) dibuja la gráfica de los n primeros términos de la sucesión de Smarandache. Por ejemplo, (graficaSmarandache 100) dibuja
(graficaSmarandache 500) dibuja
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import Data.List (genericLength) import Graphics.Gnuplot.Simple smarandache :: Integer -> Integer smarandache x = head [n | (n,y) <- zip [0..] factoriales , y `mod` x == 0] -- factoriales es la lista de los factoriales. Por ejemplo, -- λ> take 12 factoriales -- [1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800] factoriales :: [Integer] factoriales = 1 : scanl1 (*) [1..] graficaSmarandache :: Integer -> IO () graficaSmarandache n = plotList [Key Nothing , PNG ("La_funcion_de_Smarandache_" ++ show n ++ ".png") ] (map smarandache [1..n]) |