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 }}。无论如何都要优化表达式以使其运行?
答案 0 :(得分:7)
我认为这里的任务必须完全不同地解决。
看起来您正在寻找可以除以所有数字[1..20]
的第一个数字。我建议你找到范围内所有数字的所有主要除数,并找到所有素数的最大幂的乘积。