我知道如何让程序为3,5和7中的每一个加总多个的总和,但我不确定如何让程序只使用每个数字一次.例如,我可以让程序找出所有数字并将它们加起来为3然后对5进行相同的操作,但是数字15将在最终数字中两次.我不确定我是如何得到它只采取一次数字.谢谢你的帮助.
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]))
Run Code Online (Sandbox Code Playgroud)
我正在学习Haskell,希望你不介意我问这个.有没有更好的方法来获得一个列表,其中包含的所有自然数低于一千,是3或5的倍数?(例如带拉链或地图?)
编辑:
import Data.List
euler :: Int
euler = sum (union [3,6..999] [5,10..999])
Run Code Online (Sandbox Code Playgroud)
伙计们,感谢您的帮助.