Conjunto de primos relativos
Dos números enteros son primos relativos si no tienen ningún factor primo en común, o, dicho de otra manera, si no tienen otro divisor común más que 1 y -1. Equivalentemente son primos entre sí, si y sólo si, su máximo común divisor es igual a 1.
Por ejemplo, 6 y 35 son primos entre sí, pero 6 y 27 no lo son porque ambos son divisibles por 3
Definir la función
primosRelativos :: [Int] -> Bool
tal que (primosRelativos xs) se verifica si los elementos de xs son primos relativos dos a dos. Por ejemplo,
primosRelativos [6,35] == True primosRelativos [6,27] == False primosRelativos [2,3,4] == False primosRelativos [6,35,11] == True primosRelativos [6,35,11,221] == True primosRelativos [6,35,11,231] == False
Soluciones
import Data.List (delete) -- 1ª solución (por recursión): primosRelativos :: [Int] -> Bool primosRelativos [] = True primosRelativos (x:xs) = and [gcd x y == 1 | y <- xs] && primosRelativos xs -- 2ª solución (por comprensión): primosRelativos2 :: [Int] -> Bool primosRelativos2 xs = and [gcd x y == 1 | x <- xs, y <- delete x xs]