-- Practico 10 --Ejercicio 1 resto :: Int -> Int -> Int resto a 0 = error "Divisor no valido" resto 0 a = 0 resto a b | a Int -> Int divi a 0 = error "popopopopof" divi 0 a = 0 divi a b | a==b = 1 | b>a = 0 | otherwise = divi (a-b) b + 1 --Ejercicio 3 sumdeshas :: Int -> Int -> Int sumdeshas 0 0 = 0 sumdeshas 0 a = sumdeshas 0 (a - 1) + a sumdeshas a 0 = error "no" sumdeshas a b | a==b = a | a>b = error "no" | otherwise = sumdeshas a (b - 1) + b --ejercicio 4 prodehas :: Int -> Int -> Int prodehas 0 0 = 0 prodehas 0 a = 0 prodehas 1 1 = 1 prodehas 1 a = prodehas 1 (a - 1) * a prodehas a b | a==b = a | a>b =error "no es posible" | otherwise = prodehas a (b - 1) * b --ejercicio 5 arreglos:: Int -> Int -> Int arreglos a 0 =1 arreglos a b | a<0 || b>0 = error "." | a>b = error "." | divi(facto a) (facto (a-b)) facto:: Int -> Int facto 0 = 1 facto n = n * facto(n-1) --ejercicio 10 divide:: Int -> [Int] divide 0 = error "." divide 1 = [1] divide a = [x/x<-[1...a], resto x a == 0] --ejercicio 11 mcd:: Int -> Int -> Int mcd a b | a == b = a | mod a b == 0 = b |otherwise = mcd b(resto a b) --ejercicio 12 esprimo:: Int -> Bool esprimo a = largo (divide a) == 2 --Se agradece a la estudiante Bettina Battagliese por estos ejercicios.