gpt4 book ai didi

haskell - 欧拉计划 : A (much) better way to solve problem #5?

转载 作者:行者123 更新时间:2023-12-02 02:50:17 25 4
gpt4 key购买 nike

您可能知道项目 Euler 问题 5:获得可被所有数字 1 到 20 整除的最小数字。

我应用的逻辑是“从大于列表中最大值的第一个数字(20)开始,也可以被它整除,即 40”,步长为 20(最大数字)

我使用列表理解来做到这一点,但它非常蹩脚。

pe5 = head    [x|x<-[40,60..],x`mod`3==0,x`mod`4==0,x`mod`6==0,x`mod`7==0,x`mod`8==0,x`mod`9==0,x`mod`11==0,x`mod`12==0,x`mod`13==0,x`mod`14==0,x`mod`15==0,x`mod`16==0,x`mod`17==0,x`mod`18==0,x`mod`19==0] 

我们可以使用 zipWith 和 filter 来做得更好吗?

澄清一下,这不是家庭作业。我这样做是为了让我的大脑围绕 Haskell。 (到目前为止我正在输!)

:谢谢大家

我认为这是一种更明智的方法(可能有数千种更好的方法,但这就足够了)来做到这一点
listlcm'::(Integral a)=> [a] -> a
listlcm' [x] = x
listlcm' (x:xs) = lcm x (listlcm' xs)

最佳答案

在这种特殊情况下,您可以使用 foldl 免费获得它。和 lcm :

euler = foldl lcm 2 [3..20]

这立即给了我 232792560。

关于haskell - 欧拉计划 : A (much) better way to solve problem #5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com