初等数论 —— 裴蜀定理 & 一次不定方程
裴蜀定理(\(Bézout's\ lemma\)),也译作贝祖定理,或称作贝祖等式(\(Bézout's\ identity\)),给出了一个整数能够表示为两个整数的整系数线性组合的充分必要条件。
裴蜀定理
裴蜀定理
设\(a\),\(b\)是不全为\(0\)的整数,那么,对于任意整数\(x\),\(y\),都有\(gcd(a,b)|ax+by\)成立;而且,存在整数\(x\),\(y\),使得\(ax+by=gcd(a,b)\)成立。
\(Proof:\)
- 记\(d=gcd(a,b)\)。因为\(d|a\)且\(d|b\),所以存在整数\(u\),\(v\),使得\(a=du\),\(b=dv\)成立。因此,总有:\[ax+by=d(au+bv). \]这就说明\(d|(ax+by)\)。
- 为说明存在\(x\),\(y\)使得等式成立。如果\(a\),\(b\)之一是\(0\),不妨设\(b=0\),那么它们的最大公因数\(d=a\),显然有\((x,y)=(1,0)\)使得等式成立。接下来考虑\(a\),\(b\)均不为\(0\)的情况,由于\(gcd(a,b)=gcd(-a,b)=gcd(a,-b)\),所以不妨设\(a\),\(b\)均为正数。
考虑辗转相除法的过程,有:\[\begin{flalign}& a=q_1b+r_1,\quad\quad\quad\quad\quad\quad 0\leq r_1<b,\\& b=q_2r_1+r_2,\quad\quad\quad\quad\quad\ \ \ 0\leq r_2<r_1,\\& r_1=q_3r_2+r_3,\quad\quad\quad\quad\ \quad0\leq r_3<r_2,\\&\cdots\cdots\\&r_{n-3}=q_{n-1}r_{n-2}+r_{n-1},\quad\ \ 0\leq r_{n-1}<r_{n-2}\\& r_{n-2}=q_nr_{n-1}+r_n,\quad\quad\quad\ 0\leq r_n<r_{n-1}\\&r_{n-1}=q_{n+1}r_n.\end{flalign} \]由于最大公因数是\(d\),最后一步辗转相除时,一定有\(r_n=d\)。所以,倒数第二个等式可以写作\[d=r_n=r_{n-2}-q_nr_{n-1} \]从倒数第三个等式中解出:\[r_{n-1}=r_{n-3}-q_{n-1}r_{n-2} \]再代入上式,就可以消去\(r_{n-1}\):\[d=r_{n-2}-q_n(r_{n-3}-q_{n-1}r_{n-2})=(1+q_nq_{n-1})r_{n-2}-q_nr_{n-3} \]类似地,可以依次消去\(r_{n-2},r_{n-3},\cdots,r_1,r_2\),最终得到:
\(d=xa+yb.\)
这就证明了存在\(x\),\(y\)使得\(ax+by=d\)成立。
上述证明,关于存在性的证明是构造性的,它同时给出了\((x,y)\)的计算方法,这一计算方法就是扩展欧几里得算法。
int exgcd(int a, int b, int &x, int &y) {
if (b == 0) {
x = 1;
y = 0;
return a;
}
int d = exgcd(b, a % b, y, x);
y -= a / b * x;
return d;
}
考虑裴蜀定理在\(gcd(a,b)=1\)时的情形,可以得到如下推论:
多个整数
裴蜀定理可以从两个整数的情形推广至多个整数的情形:
定理
设\(a_1,a_2,\cdots,a_n\)是不全为\(0\)的整数。那么,对于任意整数\(x_1,x_2,\cdots,x_n\),都有\(gcd(a_1,a_2,\cdots,a_n)|a_1x_1+a_2x_2+\cdots+a_nx_n\);与此同时,存在整数\(x_1,x_2,\cdots,x_n\),使得\(a_1x_1+a_2x_2+\cdots+a_nx_n=gcd(a_1,a_2,\cdots,a_n)\)。
一次不定方程
一次不定方程是形如
的不定方程,其中,\(a_1,a_2,\cdots,a_n\)都是整数,我们的目标就是寻找它的全体整数解。
两个变量
考虑二元一次不定方程:
裴蜀定理指出,该方程有解,当且仅当
假设该方程有解,利用扩展欧几里得算法可以求出方程\(a_1x_1+a_2x_2=d\)的一组特解\((x_1^*,x_2^*)\)。由此,可以得到原方程的一组特解
要得到全部解,可以考虑将方程与恒等式\(a_1x_1'+a_2x_2'=b\)相减:
这是一个关于\((x_1-x_1',x_2-x_2')\)的齐次一次不定方程,它的通解为:
因此,原方程的通解就是
这是直线\(a_1x_1+a_2x_2=b\)上一系列等间隔分布的整点。
多个变量
对于\(n\)元一次不定方程
由裴蜀定理可知,方程有解当且仅当
与二元的情形类似,多元一次不定方程的通解可以写作:
其中\(\vec{x'}^T\)是一个特解,\(\vec{x^{(k)}}\)为相应的齐次方程的\((n-1)\)个解。要求出通解的具体形式,我们将\(n\)元方程转化为\((n-1)\)元不定方程。不妨设\(d_1=gcd(a_1,a_2)\),那么,根据裴蜀定理,\(a_1x_1+a_2x_2\)的全体恰为\(d_1\)的所有倍数。因此,可以先求\((n-1)\)元一次不定方程方程:
设它的通解为
设\(a_1x_1+a_2x_2=d_1\)的一组特解为\((x_1',x_2')\),则关于\(x_1\),\(x_2\)的二元一次不定方程\(a_1x_1+a_2x_2=d_1y_1\)的通解为
代入\(y_1\)的表达式,就得到了原方程的通解:
\(Frobenius\)硬币问题
裴蜀定理给出了一个整数可以由若干整数线性表出的充分必要条件。与此紧密相关的就是\(Frobenius\)硬币问题(\(Frobenius\ coin\ Problem\)):。
\(Frobenius\ coin\ problem\)
如果硬币共有\(a_1,a_2,\cdots,a_n\)等若干整数面值,且\(gcd(a_1,a_2,\cdots,a_n)=1\),那么,不能够由这些硬币组成的最大整数是多少?
同样考察整数\(k\)什么时候可以表示为\(a_1x_1+a_2x_2+\cdots+a_nx_n\)的形式,裴蜀定理中\(x_i\)可以是任意整数,而\(Frobenius\ coin\ problem\)中\(x_i\)只能是自然数。
只有一种硬币的情形是平凡的,因为只能有\(a_1=1\),所有自然数都可以由它来表示。而\(n>2\)的情况就会非常复杂。
在\(1882\)年,\(Sylvester\)完全解决了\(n=2\)时的\(Frobenius\ coin\ problem\)。
\(Sylvester\ theorem\)
对于互素的正整数\(a_1\),\(a_2\),不能写作\(a_1x_1+a_2x_2[x_1,x_2\in\mathbb{N}]\)的最大整数是\(C=a_1a_2-a_1-a_2\).而且,对于所有\(k\in\mathbb{Z}\),整数\(k\)和\(C-k\)中有且只有一个可以写作该形式。
#include <iostream>
int main() {
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
long long c = 1LL * a * b - a - b;
printf("%lld\n", c);
return 0;
}

初等数论 —— 裴蜀定理 & 一次不定方程
浙公网安备 33010602011771号