0

我正在寻找一种方法来用另一种语言实现 matlab 中使用的“gcd”函数,但我真的无法理解它的工作方式。

它在http://www.mathworks.com/access/helpdesk/help/techdoc/ref/gcd.html中说:

"[G,C,D] = gcd(A,B) 返回最大公约数数组 G 以及数组 C 和 D,它们满足等式:A(i).*C(i) + B(i ).*D(i) = G(i)。”

但它没有说明它如何计算 C 和 D。

如果有人对这个主题有更清晰的想法,我将不胜感激!谢谢:)

4

4 回答 4

4

扩展欧几里得算法

(“第 4.5.2 节算法 X”可以在http://www.fitc.unc.edu.ar/javadev/math/previous/algorithms.html中显示。)

于 2010-04-10T09:21:19.903 回答
0

Matlab 文档是指

Knuth, Donald,计算机编程的艺术,卷。2,Addison-Wesley:Reading MA,1973 年。第 4.5.2 节,算法 X。

我没有冒昧地为你解释它,但它就在那里。

于 2010-04-10T08:59:08.233 回答
0

它将使用在扩展欧几里得算法的链接中找到的基本方案之一。

于 2010-04-10T12:07:49.530 回答
0

只需键入即可查看源代码

edit gcd

在编辑器中打开该功能。然后你可以逐行查看函数。

连同其他两篇文章中的参考资料,这应该可以为您提供答案。

于 2010-04-10T09:25:30.940 回答