裴蜀定理
对任何整数 \(a\),\(b\) 关于未知数 \(x\) 和 \(y\) 的线性不定方程(称为裴蜀等式):\(ax+by=c\)
方程有整数解(当且仅当 \(c\) 是 \(gcd(a,b)\) 的倍数),裴蜀等式有解时必然有无穷多个解
即 \(ax+by=c\) 有解的充要条件为 \(gcd(a,b)|c\)
原方程的解即为\(ax+by=gcd(a,b)\)的解乘上\(\frac{c}{gcd(a,b)}\)
扩欧解出的\(x\)为\(ax+by=gcd(a,b)\),中的\(x\),若要求\(ax+by=c\)中的\(x\),两边还要乘上\(\frac{c}{gcd(a,b)}\)
推论:\(a\),\(b\) 互素等价于 \(ax+by=1\) 有解
计算其中整数 \(x\) 和整数 \(y\) 的计算方法被称为扩展欧几里得算法
\(code :\)
int exgcd(int a,int b) { if(!b) { x=1,y=0;//x,y设为全局变量 return a;//若为void,此处直接return } int ans=exgcd(b,a%b),tmp=x; x=y,y=tmp-a/b*y; return ans;//得到的为gcd(a,b) }
由欧几里得算法,得
\[ax+by=gcd(a,b)=gcd(b,a\ mod\ b)=bx^\prime+(a\ mod\ b)y^\prime\]
代入,整理得
\[x=y^\prime,\ y=x^\prime-\lfloor\frac{a}{b}\rfloor y^\prime\]
边界情况分析,\(ax^\prime+by^\prime=gcd(a,b)\),当 \(b=0\) 时,\(a\) 为 \(gcd(a,b)\),当且仅当 \(x^\prime=1\)时等式成立,\(y^\prime\) 可以为任意值,为方便起见,设\(y^\prime=0\)
根据上边的式子,即可推出多组解
通解为\(x=x_0+kb,\ y=y_0-ka\ (k∈Z)\)
同余方程
线性同余方程:
\[ax≡b\ (mod\ m)\]
其等价于\(ax-b\)是\(m\)的倍数,不妨设为\(-y\)倍,其就改写为
\[ax+my=b\]
根据裴蜀定理得,线性同余方程有解当且仅当\(gcd(a,m)|b\)
有解时,先求出\(ax_0+my_0=gcd(a,m)\),的一组解,\(x_0\),\(y_0\),原线性同余方程的一个解即为\(x=bx_0/gcd(a,m)\)
方程的通解就是所有模 \(m/gcd(a,m)\)与\(x\)同余的整数
来源:https://www.cnblogs.com/lhm-/p/12229495.html