我是Haskell的新手,并且通常是编程人员,但是我尝试解决一些Euler项目的问题,因为我喜欢解决问题。但是,我对problem #12有问题。

我设计了一个我认为可行的解决方案,但可惜没有。

您能通过我的代码问题睁开眼睛来帮助我吗,
也许将我朝正确的方向插入以解决它?谢谢你。

这是代码:

triangleNumber = scanl1 (+) [1..]

factors n = [x | x <- [1..n], n `mod` x == 0]

numFactors = length . factors

eulerTwelve = find ((>500) . numFactors) triangleNumber

非常感谢你! :)

最佳答案

设计Euler项目问题​​的目的是要尝试通过“蛮力”解决问题,即对明显的搜索进行编程并让其继续运行,这是一个坏主意。 (一些较早的问题可以这样解决,但最好不要利用它,而应将其用作练习。)相反,您必须考虑问题的数学内容,以便进行计算机搜索易处理。

我不想付出太多,但是这里有一些提示:

  • 第n个三角数有一个公式。找到它,因此您不必通过求和来计算它。
  • 给定第n个三角数的公式,则哪些数可能是其除数?
  • 鉴于您对这些除数的了解,有什么简单的方法可以找出其中的除数? (无需枚举它们。)
  • 10-04 22:21
    查看更多