简单数论
VelvetChords · · 算法·理论
整除性
定义1(整除)
如果整数
如果
如果
定理1(整除的传递性)
如果
证明
假设
又假设
因此
定理2(线性组合的整除性)
如果
证明
由假设
因此
其中
定理3(带余除法定理)
如果
在该公式中,
证明
考虑整数
余数
如果
由于商和余数是唯一确定的,因此该结果唯一。
最大公因子及其性质
定义2(最大公因子)
对于不全为零的整数
定义3(互素)
设
注意,由于
其中
定理4(约简后的最大公因子)
如果
即
证明
由假设
因此
所以
推论1(最简分数)
如果
证明
假设
因此,分数
定理5(线性组合的最大公因子)
设
证明
显然,
定义4(线性组合)
如果
定理6(线性组合与最大公因子)
两个不全为零的整数
证明
设
由于
定义5(多个整数的最大公因子)
令
记作
引理1(递归法则)
如果
证明
根据最大公因子的性质,
扩展欧几里得算法(ExGCD)
扩展欧几里得算法(ExGCD)是一种利用递归方法求解方程
假设已知
首先,我们利用欧几里得算法求得
以下是详细步骤:
-
步骤1:计算
99 与78 的最大公因数。99 = 78 \times 1 + 21 78 = 21 \times 3 + 15 21 = 15 \times 1 + 6 15 = 6 \times 2 + 3 6 = 3 \times 2 + 0 所以
\text{gcd}(99, 78) = 3 。 -
步骤2:从后往前推导解。
由于
3 = 15 - 2 \times 6 ,将6 替换为21 - 1 \times 15 ,得到:3 = 15 - 2 \times (21 - 1 \times 15) = 3 \times 15 - 2 \times 21 然后继续替换
15 和21 :3 = 3 \times (78 - 3 \times 21) - 2 \times 21 = 3 \times 78 - 11 \times 21 再替换
21 为99 - 1 \times 78 :3 = 3 \times 78 - 11 \times (99 - 1 \times 78) = -11 \times 99 + 14 \times 78 所以,得到特解
x = -11 和y = 14 。
ExGCD 的实现
扩展欧几里得算法的具体代码如下:
void exgcd(int a,int b,int &d,int &x,int &y)
{
if(b==0)
{
d=a;
x=1;
y=0;
return;
}
exgcd(b,a%b,d,x,y);
int tmp=x;
x=y;
y=tmp-(a/b)*y;
}
该算法通过递归实现,首先递归到
定理7(整数线性组合与最大公因数的关系)
若
证明:
-
首先证明每个
a 和b 的线性组合是d = \text{gcd}(a, b) 的倍数。由于d 是a 和b 的最大公因数,因此d 可以表示为d=ma+nb ,其中m 和n 是整数。因此,任何形式为ma+nb 的线性组合必然是d 的倍数。 -
现在证明每个
d 的倍数也是a 和b 的线性组合。由于定理6,存在整数r 和s 使得d=ra+sb 。对于任何整数j ,jd=j(ra+sb)=(jr)a+(js)b ,因此jd 是a 和b 的线性组合。
从而,得出结论:
推论2(互素的定义)
整数
证明:
-
如果
a 和b 互素,即\text{gcd}(a, b) = 1 ,根据定理 6,存在整数m 和n 使得:ma + nb = 1 -
反之,如果存在整数
m 和n 使得ma+nb = 1 ,则根据定理 6,得出\text{gcd}(a, b) = 1 。
因此,得出结论:整数
二元一次不定方程
引理2:
如果
证明:
由于
将等式两边同时乘以
这表明
因此:
由此证明了引理2。
定理8:
设
此外,如果
其中
证明:
-
如果
d \nmid c ,方程ax + by = c 没有整数解:
根据定理7,方程ax + by 的结果是d 的倍数。因此,如果
d \nmid c ,则方程ax + by = c 没有整数解。 -
如果
d \mid c ,存在整数解:
根据定理7,方程ax + by = c 有解的充要条件是d \mid c 。因为
d = \gcd(a, b) ,根据贝祖定理,存在整数s 和t 使得:as + bt = d 由于
d \mid c ,存在整数e 使得:de = c 则有:
c = de = (as + bt)e = a(se) + b(te) 这样,
x_0 = se 和y_0 = te 是方程ax + by = c 的一个特解。 -
证明无穷多个解的存在:
设
x = x_0 + \frac{b}{d}n 和y = y_0 - \frac{a}{d}n ,其中n 是整数,来证明这些解的存在性。(1) 证明任意一对
(x_0 + \frac{b}{d}n, y_0 - \frac{a}{d}n) 是方程的解:代入
x = x_0 + \frac{b}{d}n 和y = y_0 - \frac{a}{d}n 到方程ax + by = c 中:a\left(x_0 + \frac{b}{d}n\right) + b\left(y_0 - \frac{a}{d}n\right) = ax_0 + by_0 + \frac{ab}{d}n - \frac{ab}{d}n = ax_0 + by_0 由于
ax_0 + by_0 = c ,所以:a\left(x_0 + \frac{b}{d}n\right) + b\left(y_0 - \frac{a}{d}n\right) = c 因此,
(x_0 + \frac{b}{d}n, y_0 - \frac{a}{d}n) 是方程的解。(2) 证明方程的任意解都可以表示为
(x_0 + \frac{b}{d}n, y_0 - \frac{a}{d}n) :假设
(x, y) 是方程的一个解,即:ax + by = c 又因为
ax_0 + by_0 = c ,两式相减得到:a(x - x_0) + b(y - y_0) = 0 即:
a(x - x_0) = -b(y - y_0) 两边同时除以
d 得到:\frac{a}{d}(x - x_0) = \frac{b}{d}(y_0 - y) 由于
\frac{a}{d} 和\frac{b}{d} 互质,根据引理2,\frac{a}{d} \mid (y_0 - y) ,因此存在整数n 使得:\frac{a}{d}n = y_0 - y 由此得出:
y = y_0 - \frac{a}{d}n 同理,
\frac{b}{d} \mid (x - x_0) ,因此存在整数n 使得:\frac{b}{d}n = x - x_0 从而得出:
x = x_0 + \frac{b}{d}n 因此,方程的任意解都可以表示为:
x = x_0 + \frac{b}{d}n, \quad y = y_0 - \frac{a}{d}n 其中
n 是整数。