开门见山,直奔主题
首先要了解拓展欧几里得,先要了解几个概念:
一、裴蜀定理
重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1,也就是 ax+by=gcd(a,b)=1
二、乘法逆元
在中国剩余定理的计算里,需要求一个数字在一个模下的逆元,也就是对于给定的 a,b,找到方程 的一个整数解 a* 。接下来我们分析一下这个方程背后隐藏着什么。根据同余的定义,有 ,也就是存在整数 k使得 b*k=aa*-1 。移一下项,就得到了 aa*-bk=1. 即aa*+(-)bk=1这个形式恰好符合裴蜀定理 ax+by=1 的形式,于是 (a,b)=1 ,这表明 a,b互质是逆元存在的必要条件。
三、欧几里得算法
原来博客有提及过,这里就不详写了,给个代码吧
int gcd(int a, int b) { if(a < b) return gcd(b, a); if(b == 0) return a; return gcd(b, a % b); }
呵呵,进入正题
扩展欧几里得计算ax+by=c的整数解(x,y)程序如下:
目前本人还有些不懂,会再问老师。。。
继续水
拜拜