【发布时间】:2021-12-13 16:51:10
【问题描述】:
经过一些实验和搜索,我想出了以下定义:
emcd' :: Integer -> Integer -> (Integer,Integer,Integer)
emcd' a 0 = (a, 1, 0)
emcd' a b =
let (g, t, s) = emcd' b r
in (g, s, t - (q * s))
where
(q, r) = divMod a b
-
t - (q * s)这个表达式背后的含义是什么?
我尝试过手动评估它;即使我得到了正确的结果(1, -4, 15),我也看不出为什么该表达式会返回t 的值。
as + bt = gcd(a, b)中有一个著名的计算s和t的方法。在寻找 gcd 的过程中,我得到了几个方程。
通过反转欧几里得算法中的步骤,可以找到这些整数a 和b。这些结果方程看起来像表达式t - (q * s);但是,我无法弄清楚确切的过程。
【问题讨论】:
标签: haskell euclidean-algorithm