是否可以优化此表达式

时间:2014-05-08 18:14:38

标签: haskell

check x = filter((==0) . (\(x,y) -> x `mod` y)) $ zip (replicate 20 x)  [1..20]
main = do 
   print $ take 1 $ filter ((==20) . length) [check x | x <- [1..]]

我尝试通过http://www.compileonline.com/compile_haskell_online.php运行上述内容,但似乎使用了太多资源,因为正在评估的数字会增加,因此我可以搜索filter(==18)但不会{{1 }}。无论如何都要优化表达式以使其运行?

1 个答案:

答案 0 :(得分:7)

我认为这里的任务必须完全不同地解决。

看起来您正在寻找可以除以所有数字[1..20]的第一个数字。我建议你找到范围内所有数字的所有主要除数,并找到所有素数的最大幂的乘积。