Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uniqueVec :: Integer -> [(Integer, Integer, Bool)]
- uniqueVec limit = map (isUnique 0) candidates
- where
- candidates = [(x,y) | x <- [1..limit], y <- [1..limit], x /= y, y <= x]
- isUnique :: Integer -> (Integer, Integer) -> (Integer, Integer, Bool)
- isUnique 0 (x,y) = isUnique (min x y) (x,y)
- isUnique 1 (x,y) = (x,y,True)
- isUnique current (x,y) = if (x > 1 && y > 1) && (mod x current == 0 && mod y current == 0)
- then (x,y,False)
- else isUnique (current - 1) (x,y)
- countVec :: Integer -> Int
- countVec limit = (+ 1) $ length $ foldr (\(x,y,z) xs -> if z then ((x,y):xs) else xs) [] $ uniqueVec limit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement