写在前面
贝祖公式的推导是建立在欧几里得算法的基础之上的,关于欧几里得算法的推导可以看我之前发的这个帖子:这里
为什么需要证明贝祖公式
对于互质的性质:若 整数 a 与 b 互质, 则存在 整数 x, y, 使得 xa + yb = 1 (贝祖公式)
公式内容
两个数的最大公约数,可以用两个数的整数倍相加获得,即
∀
a
,
b
∈
Z
,
g
c
d
(
a
,
b
)
=
m
,
则
∃
x
,
y
∈
Z
,
使
得
a
∗
x
+
b
∗
y
=
m
\forall a,b\in Z,gcd(a,b)=m,则\exists x,y\in Z, 使得 a*x + b*y = m
∀a,b∈Z,gcd(a,b)=m,则∃x,y∈Z,使得a∗x+b∗y=m
证明
要证:
∀
a
,
b
∈
Z
,
g
c
d
(
a
,
b
)
=
m
,
则
∃
x
,
y
∈
Z
,
使
得
a
∗
x
+
b
∗
y
=
m
\forall a,b\in Z,gcd(a,b)=m,则\exists x,y\in Z, 使得 a*x + b*y = m
∀a,b∈Z,gcd(a,b)=m,则∃x,y∈Z,使得a∗x+b∗y=m
即证:
关
于
x
,
y
的
方
程
:
k
1
∗
x
+
k
2
∗
y
=
g
c
d
(
k
1
,
k
2
)
有
整
数
解
关于x,y的方程 : k1*x + k2*y = gcd(k1,k2) 有整数解
关于x,y的方程:k1∗x+k2∗y=gcd(k1,k2)有整数解
关于
x
,
y
x, y
x,y 的方程
k
1
∗
x
+
k
2
∗
y
=
g
c
d
(
k
1
,
k
2
)
k1*x + k2*y = gcd(k1,k2)
k1∗x+k2∗y=gcd(k1,k2), 由于这是一个一元一次方程,因此一定有解,需要证明的是它一定有整数解
不妨设 { k 1 = a k 2 = b \left\{\begin{matrix} &k1 = a & \\ &k2 = b & \end{matrix}\right. {k1=ak2=b时, x , y x,y x,y的解是 x 1 , y 1 即 a ∗ x 1 + b ∗ y 1 = m x1,y1即a*x1+b*y1 = m x1,y1即a∗x1+b∗y1=m
再设
{
k
1
=
b
k
2
=
a
m
o
d
b
\left\{\begin{matrix} &k1 = b & \\ &k2 = a \bmod b & \end{matrix}\right.
{k1=bk2=amodb时,
x
,
y
x,y
x,y的解是
x
2
,
y
2
即
b
∗
x
2
+
(
a
m
o
d
b
)
∗
y
2
=
m
x2,y2即b*x2+(a \bmod b )*y2 = m
x2,y2即b∗x2+(amodb)∗y2=m(根据欧几里得算法
g
c
d
(
a
,
b
)
=
g
c
d
(
b
,
a
m
o
d
b
gcd(a,b) = gcd(b,a\bmod b
gcd(a,b)=gcd(b,amodb)
∵
a
∗
x
1
+
b
∗
y
1
=
b
∗
x
2
+
(
a
m
o
d
b
)
∗
y
2
\because a*x1+b*y1 = b*x2+(a\mod b)*y2
∵a∗x1+b∗y1=b∗x2+(amodb)∗y2
又
∵
a
=
(
a
m
o
d
b
)
+
b
∗
⌊
a
/
b
⌋
又\because a = (a\mod b) + b*\left \lfloor a/b \right \rfloor
又∵a=(amodb)+b∗⌊a/b⌋
∴
a
m
o
d
b
=
a
−
⌊
a
/
b
⌋
\therefore a\mod b = a - \left \lfloor a/b \right \rfloor
∴amodb=a−⌊a/b⌋
∴
a
∗
x
1
+
b
∗
y
1
=
b
∗
x
2
+
(
a
−
⌊
a
/
b
⌋
)
∗
y
2
=
a
∗
y
2
+
b
∗
(
x
2
−
⌊
a
/
b
⌋
∗
y
2
)
\therefore a*x1+b*y1 = b*x2+(a - \left \lfloor a/b \right \rfloor)*y2 =a*y2 + b*(x2- \left \lfloor a/b \right \rfloor*y2)
∴a∗x1+b∗y1=b∗x2+(a−⌊a/b⌋)∗y2=a∗y2+b∗(x2−⌊a/b⌋∗y2)
∴
a
∗
(
x
1
−
y
2
)
+
b
∗
(
y
1
−
x
2
+
⌊
a
/
b
⌋
∗
y
2
)
=
0
\therefore a*(x1-y2) + b*(y1-x2+\left \lfloor a/b \right \rfloor*y2)=0
∴a∗(x1−y2)+b∗(y1−x2+⌊a/b⌋∗y2)=0
则
{
x
1
−
y
1
=
0
y
1
−
x
2
+
⌊
a
/
b
⌋
∗
y
2
=
0
解
之
:
{
x
1
=
y
1
y
1
=
x
2
−
⌊
a
/
b
⌋
∗
y
2
则\left\{\begin{matrix} x1-y1=0& \\ y1-x2+\left \lfloor a/b \right \rfloor*y2 =0& \end{matrix}\right.解之: \left\{\begin{matrix} x1=y1& \\ y1 =x2-\left \lfloor a/b \right \rfloor*y2& \end{matrix}\right.
则{x1−y1=0y1−x2+⌊a/b⌋∗y2=0解之:{x1=y1y1=x2−⌊a/b⌋∗y2
即
对
于
该
方
程
,
a
与
b
的
解
,
可
以
用
b
,
a
m
o
d
b
的
解
表
示
出
来
即 对于该方程,a与b的解, 可以用 b, a\bmod b的解表示出来
即对于该方程,a与b的解,可以用b,amodb的解表示出来
无
限
递
归
下
去
,
a
,
b
,
g
c
d
(
a
,
b
)
的
解
,
可
以
用
m
,
0
,
g
c
d
(
m
,
0
)
表
示
出
来
无限递归下去, a,b,gcd(a,b)的解, 可以用 m,0, gcd(m,0)表示出来
无限递归下去,a,b,gcd(a,b)的解,可以用m,0,gcd(m,0)表示出来(根据欧立德算法, m既是 a,b最大公约数,递归结果)
不妨设
{
k
1
=
m
k
2
=
0
\left\{\begin{matrix} k1=m& \\ k2 =0& \end{matrix}\right.
{k1=mk2=0时,
x
,
y
的
解
为
x
n
,
y
n
,
m
∗
x
n
+
0
∗
y
n
=
g
c
d
(
m
,
0
)
=
m
x,y的解为x_{n},y_{n}, m*x_{n} + 0*y_{n} = gcd(m,0) = m
x,y的解为xn,yn,m∗xn+0∗yn=gcd(m,0)=m
解
之
:
x
n
=
1
,
y
n
=
∀
R
解之:x_{n}= 1, y_{n} = \forall R
解之:xn=1,yn=∀R
回溯递归即
{
x
n
−
1
=
y
n
y
n
−
1
=
x
n
−
⌊
a
/
b
⌋
∗
y
n
\left\{\begin{matrix} x_{n-1}= y_{n}& \\ y_{n-1} =x_{n}-\left \lfloor a/b \right \rfloor*y_{n}& \end{matrix}\right.
{xn−1=ynyn−1=xn−⌊a/b⌋∗yn也一定是整数,无限向上递归,
最后可以确定 ∃ x , y ∈ Z , 使 得 a ∗ x + b ∗ y = m \exists x,y\in Z, 使得 a*x + b*y = m ∃x,y∈Z,使得a∗x+b∗y=m