我需要为多项式实现一个扩展的欧几里得算法,以获得 Bézout 恒等式的系数。问题是我正在努力正确实现这样的功能。我找到了一些代码示例,这些示例显示了解决方案,但适用于 N 个数字(int)。在我的项目中,我正在使用自己的多项式类,并且这种自定义类型已经具有经过良好测试的基本运算,例如 +、-、*。每个执行的操作都是在多项式类(例如 F3)中指定的某个有限域上进行的,并且模算术已经实现并应用于程序的各个方面。
所以考虑你有以下几点:
多项式(类型),具有所有基本运算。
我的问题是如何有效地转换方法gcdExtended <- 从此页面上的一个,它将我的多项式类作为参数而不是 int 类型。
我正在寻找解决方案的好方法,但我不确定线路:
int gcd = gcdExtended(b % a, a, x1, y1);
和
x = y1 - (b / a) * x1;
第一个代码被剪断是否b % a
意味着我应该进行欧几里得算法的第一次迭代并返回余数?b / a
第二个是什么意思?
这不应该那么复杂,但我想我已经盯着这个项目 2 很长时间了,现在我被这个简单的事情冻结了。
返回的 Ofcx & b
必须是 type Polynomial <=> ax+by = gcd(a,b)
。