import Data.Set

euler :: Int
euler = sum [ x | x <- nums ]
    where
    nums = Data.Set.toList (Data.Set.union (Data.Set.fromList [3,6..999])
                                           (Data.Set.fromList [5,10..999]))

我正在学习 Haskell,希望你不介意我问这个。有没有更好的方法来获得一个列表,其中包含 3 或 5 的倍数的一千以下的所有自然数? (例如,使用 zip 或 map ?)

编辑:
import Data.List

euler :: Int
euler = sum (union [3,6..999] [5,10..999])

谢谢你们的帮助,伙计们。

最佳答案

使用列表理解:

sum [x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0]

关于haskell - 使用 Haskell 的 Euler #1 项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11982471/

10-10 18:24