Edición de «Práctica 0 (pre 2010, Paradigmas)»
De Cuba-Wiki
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 4: | Línea 4: | ||
a) | a) | ||
absoluto :: Float -> Float | absoluto :: Float -> Float | ||
absoluto f | f < 0 = negate f | absoluto f | f < 0 = negate f | ||
| otherwise = f | | otherwise = f | ||
Línea 12: | Línea 10: | ||
b) | b) | ||
bisiesto :: Int -> Bool | bisiesto :: Int -> Bool | ||
bisiesto n | ((n `mod` 100) == 0) = False | bisiesto n | ((n `mod` 100) == 0) = False | ||
| ((n `mod` 4) == 0) = True | | ((n `mod` 4) == 0) = True | ||
| otherwise = False | | otherwise = False | ||
Línea 23: | Línea 18: | ||
c) | c) | ||
factorial :: Int -> Int | factorial :: Int -> Int | ||
factorial n | (n == 0) = 1 | factorial n | (n == 0) = 1 | ||
| (n == 1) = 1 | | (n == 1) = 1 | ||
| otherwise = n * factorial (n-1) | | otherwise = n * factorial (n-1) | ||
Línea 35: | Línea 27: | ||
cantDivisoresPrimos :: Int -> Int | cantDivisoresPrimos :: Int -> Int | ||
cantDivisoresPrimos n = cantDivisoresPrimosAux n n | cantDivisoresPrimos n = cantDivisoresPrimosAux n n | ||
cantDivisoresPrimosAux :: Int -> Int -> Int | cantDivisoresPrimosAux :: Int -> Int -> Int | ||
cantDivisoresPrimosAux n i | (i == 1) = 0 | cantDivisoresPrimosAux n i | (i == 1) = 0 | ||
| ((esPrimo(i)) && ((n `mod` i)==0)) = 1 + cantDivisoresPrimosAux n (i-1) | | ((esPrimo(i)) && ((n `mod` i)==0)) = 1 + cantDivisoresPrimosAux n (i-1) | ||
| otherwise = cantDivisoresPrimosAux n (i-1) | | otherwise = cantDivisoresPrimosAux n (i-1) | ||
esPrimo n = not (factors 2 n) | esPrimo n = not (factors 2 n) | ||
factors m n | m == n = False | factors m n | m == n = False | ||
| m < n = divides m n || factors (m+1) n | | m < n = divides m n || factors (m+1) n | ||
divides a b = (mod b a == 0) | divides a b = (mod b a == 0) | ||
prime 1 = False | prime 1 = False | ||
prime 2 = True | prime 2 = True | ||
prime n = filter (divides n) primes == [] | prime n = filter (divides n) primes == [] | ||
where numbers = [x | x <- [2..n-1], x*x <= n] | where numbers = [x | x <- [2..n-1], x*x <= n] | ||
primes = filter prime numbers | primes = filter prime numbers | ||