我正在尝试 Euler Q3 项目,需要获得一个数字的最大素数。到目前为止,我已经获得了一对函数来返回给定数字的所有因子的列表,但这似乎是一种非常糟糕的方法(部分原因是我只需要最大的)。
get_factors :: (Integral a) => a -> [a] -> [a]
get_factors _ [] = []
get_factors t (x:xs)
| t `mod` x == 0 = x:get_factors t xs
| otherwise = get_factors t xs
factors :: (Integral a) => a -> [a]
factors x = get_factors x [x,x-1..1]
> factors 1000
> [1000,500,250,200,125,100,50,40,25,20,10,8,5,4,2,1]
如果你要启动递归函数,我需要一个“启动”函数,这对我来说似乎很奇怪(或者有一个函数,我必须两次传递相同的值,再次,对我来说似乎很愚蠢)。
你能指出我应该如何做这件事的正确方向吗?