扩展欧几里德算法:
已知两个不完全为 0 的非负整数 a,b,必然存在整数对 x,y ,使它们满足贝祖等式:
解一定存在,根据数论中的相关定理。下面给出代码:
int extgcd(int a, int b, int& x, int& y) {
int gcd = a;
if (b != 0) {
gcd = extgcd(b, a % b, y, x);
y -= (a / b) * x;
}
else {
x = 1; y = 0;
}
return gcd;
}
解二元一次不定方程(ax + by = c):
扩展欧几里德算法很大的一个用处就是在解不定方程。在计算时一般先是求出一对特解,再根据x与y的变化比例,构造通解。
注意我们求的所有解,都是整数解。
我们先计算 的解,等式两边同时乘以
原式子就被构造成
所以就求出了不定方程的一对特解