所以这是我的代码,用于查找数字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将是一个整数。我该如何解决这个错误?提前谢谢!