裴枢定理 扩展欧几里得算法 中国余数定理
目录
- 裴蜀定理
- 裴蜀定理的定义
- 裴蜀定理求解二元不定方程
- 扩展欧几里得算法
- 算法的简介
- 算法的应用场景
- 算法实现过程的证明
- 解不定线性方程组
- 代码实现
- 线性同余方程
- 代码实现
- 中国剩余定理
- 中国剩余定理的定义
- 表达整数的奇怪方式(高难)
- 实现思路
- 代码实现
裴蜀定理
裴蜀定理的定义
若 a , b a,b a,b 是正整数,且 g c d ( a , b ) = d gcd(a,b)=d gcd(a,b)=d,那么:
- 对于任意的整数 x , y , a x + b y x,y,ax+by x,y,ax+by 都一定是 d d d 的倍数。
- g c d ( a , b ) gcd(a,b) gcd(a,b) 是 a x + b y ax + by ax+by 能凑出来的最小正整数。
- 一定存在整数 x , y x,y x,y (不唯一),使 a x + b y = d ax+by=d ax+by=d 成立。
什么是贝祖数?
例如: 2 x + y = 3 2x+y=3 2x+y=3,那么符合这个等式的 { x = 1 y = 1 \left\{\begin{array}{l}x = 1 \\ y = 1\end{array}\right. {x=1y=1 就是一组贝祖数。
裴蜀定理求解二元不定方程
设二元一次不定方程
a x + b y = c ax+by=c ax+by=c
(其中 a , b , c a, b, c a,b,c 是整数,且 a , b a, b a,b 都不是 0 0 0)
假定有一组整数解 { x = x 0 y = y 0 \left\{\begin{array}{l}x = x_0 \\ y = y_0\end{array}\right. {x=x0y=y0,则原式的一切整数的通解可以表示成:
{ x = x 0 − b ( a , b ) t y = y 0 + a ( a , b ) t ( t ∈ Z ) \begin{cases} x=x_0- \frac b{(a,b)}t \\y=y_0+ \frac a{(a,b)}t\qquad (t\in\mathbb{Z})\end{cases} {x=x0−(a,b)bty=y0+(a,b)at(t∈Z)
其中 ( a , b ) (a,b) (a,b) 代表 a a a 和 b b b 的最大公约数。
证明过程:
设
x
0
,
y
0
x_0,y_0
x0,y0 是方程(1)的一个整数解组,即:
a
x
0
+
b
y
0
=
c
(
1
)
ax_0+by_0=c\qquad (1)
ax0+by0=c(1)
将
x
0
,
y
0
x_0,y_0
x0,y0 代入方程(1),可得:
a
(
x
−
x
0
)
+
b
(
y
−
y
0
)
=
0
a(x-x_0) + b(y-y_0) = 0
a(x−x0)+b(y−y0)=0
因为
a
,
b
a,b
a,b 都是非0整数,所以上式等价于:
a
(
a
,
b
)
(
x
−
x
0
)
+
b
(
a
,
b
)
(
y
−
y
0
)
=
0
\frac{a}{(a,b)}(x-x_0)+\frac{b}{(a,b)}(y-y_0)=0
(a,b)a(x−x0)+(a,b)b(y−y0)=0
上式为:
−
b
(
a
,
b
)
(
y
−
y
0
)
=
a
(
a
,
b
)
(
x
−
x
0
)
-\frac{b}{(a,b)}(y-y_0) = \frac{a}{(a,b)}(x-x_0)
−(a,b)b(y−y0)=(a,b)a(x−x0)
因为:
(
b
(
a
,
b
)
,
a
(
a
,
b
)
)
=
1
(\frac{b}{(a,b)},\frac{a}{(a,b)})=1
((a,b)b,(a,b)a)=1
所以:
a
(
a
,
b
)
∣
(
y
−
y
0
)
\frac{a}{(a,b)}|(y-y_0)
(a,b)a∣(y−y0)
y
=
y
0
+
a
(
a
,
b
)
t
(
t
∈
Z
)
y=y_0+\frac{a}{(a,b)}t\qquad (t\in\mathbb{Z})
y=y0+(a,b)at(t∈Z)
对
x
x
x 同理,让
t
t
t 取所有整数,可以得到方程(1)的全部整数解:
上一篇:
扩展欧几里得算法简介
下一篇:
AcWing 877.扩展欧氏算法
{
x
=
x
0
−
b
(
a
,
b
)
t
y
=
y
0
+
a
(
a
,
b
)
t
(
t
∈
Z
)
\begin{cases} x=x_0-\frac{b}{(a,b)}t \\ y=y_0+\frac{a}{(a,b)}t \qquad (t\in\mathbb{Z})\end{cases}
{x=x0−(a,b)