16 lines
547 B
Haskell
16 lines
547 B
Haskell
hamming = 1 : map (2*) hamming `union` map (3*) hamming `union` map (5*) hamming
|
|
|
|
union a@(x:xs) b@(y:ys) = case compare x y of
|
|
LT -> x : union xs b
|
|
EQ -> x : union xs ys
|
|
GT -> y : union a ys
|
|
|
|
main = do
|
|
print $ take 20 hamming
|
|
print (hamming !! (1691-1), hamming !! (1692-1))
|
|
print $ hamming !! (1000000-1)
|
|
|
|
-- Output:
|
|
-- [1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,36]
|
|
-- (2125764000,2147483648)
|
|
-- 519312780448388736089589843750000000000000000000000000000000000000000000000000000000
|