用于在Haskell中查找数字因子的代码

时间:2014-09-15 18:51:01

标签: haskell functional-programming

所以这是我的代码,用于查找数字n的因子,不包括n和1.

factors :: Int -> [Int]
factors n = [x | x <- [2..(intSquareRoot n)], n `mod` x ==0]

intSquareRoot :: Int -> Int
intSquareRoot n = intSq n
  where
    intSq x
      | x*x > n = intSq (x - 1)
      | otherwise = x

它找到n到sqrt(n)的因子,然后我想添加其余的因子。我想要的代码看起来像这样

factors :: Int -> [Int]
factors n = [x | x <- [2..(intSquareRoot n)], n `mod` x ==0]
          ++[1/x | x <- [2..(intSquareRoot n)], n `mod` x ==0]

但是Haskell给了我一个错误,它预计会有一个小数,这是可以理解的,因为我正在划分它。但是,我知道对于满足列表条件的所有x,n / x将是一个整数。我该如何解决这个错误?提前谢谢!

0 个答案:

没有答案