coprime -3 4
这理论上应该计算两个整数是否是互质的,但我想知道Haskell编译器中究竟发生了什么?'如果我要跑,比如,coprime 3 4
。如果这是True
,程序将正常运行并返回??updated_at=2016-05-02T01:12:57.204Z
。在这种情况下,Haskell编译器如何处理负数?
答案 0 :(得分:4)
不是Haskell编译器计算它。它是标准库中的gcd
function。 source code of the standard library:
gcd :: (Integral a) => a -> a -> a
{-# NOINLINE [1] gcd #-}
gcd x y = gcd' (abs x) (abs y)
where gcd' a 0 = a
gcd' a b = gcd' b (a `rem` b)
表明它在计算最大公分母之前首先取两个参数的绝对值。