gpt4 book ai didi

Haskell 函数需要很长时间才能处理

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

我正在做欧拉项目的第 12 题,我必须找到第一个除数为 501 的三角形数。所以我用 Haskell 完成了这个:

divS n = [ x | x <- [1..(n)], n `rem` x == 0 ]
tri n = (n* (n+1)) `div` 2
divL n = length (divS (tri n))
answer = [ x | x <- [100..] , 501 == (divL x)]

第一个函数查找数字的除数。

第二个函数计算第n个三角形数

第三个函数查找三角形数的约数列表的长度

第四个函数应返回有 501 个约数的三角形数的值。

但是到目前为止,这个运行了一段时间没有返回结果。答案是否非常大,或者我是否需要进行一些认真的优化才能在实际时间内完成这项工作?

最佳答案

您需要使用除数函数的属性:http://en.wikipedia.org/wiki/Divisor_function

请注意,n 和 n + 1 始终互质,因此您可以通过乘以先前计算的值来获得 d(n * (n + 1)/2)。

关于Haskell 函数需要很长时间才能处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1483327/

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