【发布时间】:2012-01-31 20:48:04
【问题描述】:
根据这本书,这就是它的完成方式,但我无法让它发挥作用。它给了我一个错误不在范围内:'ld'。我猜我应该导入一些包,但不确定是哪个包。此外,本书在提示符处使用 GS 模块,但我使用的是具有 Prelude 的 WinGHCi。我在这里错过了什么?
factors :: Int -> [Int]
factors n | n < 1 = error "not positive"
| n == 1 = []
| otherwise = p : factors (div n p)
where p = ld n
我想这也可以使用 map 和 filter 函数来完成?怎么样?
【问题讨论】:
-
您应该重新表述您的问题,以明确您遇到的具体问题,以便我们给您适当的提示。
-
还是不太好。首先考虑除数。除数 n 的结果代表什么?您将如何手动计算它们?你能把它翻译成 Haskell 代码吗?部分?
-
确实如此:“素数 n 是一个只有 1 和 n 的除数的数”。
n=1可以被 1、n(在这种情况下等于 1)整除,除此之外没有其他任何东西。所以根据这个定义,1 将是一个素数。 -
@iPC - 如果你愿意提供一个完善的英文解决方案,我相信这里的人会很乐意将它翻译成 Haskell。但问题显然是,你根本不知道“k 除 n”是什么意思。
-
@iPC - 看看第 5 页的顶部。你在那里看到了什么?