浅谈拓展欧几里得算法、最小整整数解与乘法逆元
欧几里得: 首先要明确欧几里得算法,就是我们所说的辗转相除法。 就是求两个数a,b的最大公因数gcd(a,b) ll gcd ( ll a , ll b ) //欧几里得算法 { //辗转相除法 if ( a % b == 0 ) return b ; return gcd ( b , a % b ) ; } 拓展欧几里得算法 通俗来说就是求二元一次方程 Ax+By=gcd(A,B) 的(x,y)的所有的解。(假设A,B已知) 我们的方法是通过这组方程的一个特解,得出他的通解。 那么就有两个问题 1.如何得到他的特解? 2.如何得由特解得到通解? **** 1.找特解 由欧几里得算法可以将gcd(A,B)写成gcd(B,A%B)。 得到一个新的方程 Bx2+(A%B) * y2=gcd(B,A%B); -------------1 A%B=A-(A/B)*B; 再次改写方程 Bx2+[A-(A/B) * B ] y2=gcd(B,A%B);*------------2 当gcd(B,A%B)一直向下写,直到A%B=0 时; 由1号方程得 Bx2=B; 这时候我们得出方程的一组特解为x2=1,y2=0; 此时我们已经解决了第一个问题找到方程组的特解。 2.如何由特解得出通解 继续观察式子 2 。我们既然已经得出特解x2与y2。那么我们要是知道x2与x的关系,y2与y的关系