30 lines
667 B
Haskell
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)]
|
|
|