cs420/Week6/lecture2.hs

30 lines
667 B
Haskell

factors :: Int -> [Int]
factors n = [x | x <- [1..n], rem n x == 0]
prime :: Int -> Bool
prime n = factors n == [1,n]
primes :: Int -> [Int]
primes n = [p | p <- [2..n], prime p]
pairs :: [a] -> [(a,a)]
pairs xs = zip xs (tail xs)
sorted :: Ord a => [a] -> Bool
sorted xs = and [x <= y | (x,y) <- pairs xs]
perfect :: Int -> Bool
perfect n = sum (init (factors n)) == n
perfects :: Int -> [Int]
perfects n = [x | x <- [1..n], perfect x]
scalar :: Num a => [a] -> [a] -> a
scalar xs ys = sum [x*y | (x,y) <- zip xs ys]
pyth (a,b,c) = a^2 + b^2 == c^2
pyths :: Int -> [(Int,Int,Int)]
pyths n = [(a,b,c) | a <- [1..n], b <- [1..n], c <- [1..n], pyth (a,b,c)]