专栏文章

简单数论

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqat46o
此快照首次捕获于
2025/12/04 01:46
3 个月前
此快照最后确认于
2025/12/04 01:46
3 个月前
查看原文

整除性

定义1(整除)

如果整数 aabb 满足 a0a \neq 0,我们说 aa 整除 bb(记作 aba \mid b),是指存在一个整数 cc ,使得 b=acb = ac
如果 aa 整除 bb,我们称 aabb 的因子,且称 bbaa 的倍数。
如果 aa 不整除 bb,则记作 aba \nmid b

定理1(整除的传递性)

如果 a,b,ca, b, c 为整数,且 aba \mid bbcb \mid c,则有 aca \mid c
证明
假设 aba \mid b,即存在整数 kk,使得 b=akb = ak
又假设 bcb \mid c,即存在整数 mm,使得 c=bm=akmc = bm = akm
因此 aca \mid c,因为 c=a(km)c = a(km),其中 kmkm 是整数。

定理2(线性组合的整除性)

如果 a,b,m,na, b, m, n 为整数,且 cac \mid acbc \mid b,则有 c(ma+nb)c \mid (ma + nb)
证明
由假设 cac \mid acbc \mid b,存在整数 ppqq,使得 a=cpa = cpb=cqb = cq
因此 ma+nb=m(cp)+n(cq)=c(mp+nq)ma + nb = m(cp) + n(cq) = c(mp + nq)
其中mp+nqmp + nq是整数,所以 c(ma+nb)c \mid (ma + nb)

定理3(带余除法定理)

如果 aabb 是整数且 b>0b > 0,则存在唯一的整数 qqrr,使得 a=bq+ra = bq + r,且 0r<b0 \leq r < b
在该公式中,qq 称为商,rr 称为余数,aa 称为被除数,bb 称为除数。
证明
考虑整数 aa 和正整数 bb,我们可以通过“除法”得到商 qq 和余数 rr,使得 a=bq+ra = bq + r
余数 rr 必须满足 0r<b0 \leq r < b
如果 rbr \geq b,可以通过增加商 qq的值来调整,使得余数 rr 落在范围 0r<b0 \leq r < b内。
由于商和余数是唯一确定的,因此该结果唯一。

最大公因子及其性质

定义2(最大公因子)

对于不全为零的整数 aabb,它们的最大公因子是指能够同时整除 aabb的最大整数。记作 (a,b)(a, b)

定义3(互素)

aabb为非零整数,如果 (a,b)=1(a, b) = 1,则称 aabb互素。
注意,由于a-aaa的因子相同,所以有 (a,b)=(a,b)(a, b) = (|a|, |b|)
其中 a|a|表示 aa的绝对值。因此,我们只关注正整数对的最大公因子。

定理4(约简后的最大公因子)

如果 a,ba, b是整数,且(a,b)=d(a, b) = d,则有
(ad,bd)=1\left(\frac{a}{d}, \frac{b}{d}\right) = 1
ad\frac{a}{d}bd\frac{b}{d}互素。
证明
由假设 (a,b)=d(a, b) = d,则 a=dxa = dxb=dyb = dy,其中 xxyy 满足 (x,y)=1(x, y) = 1
因此 (ad,bd)=(x,y)=1\left(\frac{a}{d}, \frac{b}{d}\right) = (x, y) = 1
所以 ad\frac{a}{d}bd\frac{b}{d}互素。

推论1(最简分数)

如果 a,ba, b 为整数,且 b0b \neq 0,则 ab=pq\frac{a}{b} = \frac{p}{q},其中 ppqq为整数,且 (p,q)=1(p, q) = 1,且 q0q \neq 0
证明
假设 (a,b)=d(a, b) = d,则可以表示为 a=dpa = dpb=dqb = dq,其中 ppqq 互素。
因此,分数 ab=dpdq=pq\frac{a}{b} = \frac{dp}{dq} = \frac{p}{q},且(p,q)=1(p, q) = 1,即该分数是最简分数。

定理5(线性组合的最大公因子)

a,b,ca, b, c为整数,那么 (a+cb,b)=(a,b)(a + cb, b) = (a, b)
证明
显然, a+cba + cbbb 都被 aabb 的最大公因子整除,因为 (a,b)(a, b) 是它们的最大公因子。所以,(a+cb,b)=(a,b)(a + cb, b) = (a, b)

定义4(线性组合)

如果 aabb 是整数,那么它们的线性组合具有形式 ma+nbma + nb,其中 mmnn 都是整数。

定理6(线性组合与最大公因子)

两个不全为零的整数 aabb 的最大公因子是它们的线性组合中最小的正整数。
证明
d=(a,b)d = (a, b),那么 dd 可以表示为 d=ma+nbd = ma + nb,其中 mmnn 为整数。
由于 ddaabb的最大公因子,它是所有能表示为 ma+nbma + nb 的正整数中的最小值。

定义5(多个整数的最大公因子)

a1,a2,,ana_1, a_2, \dots, a_n 为不全为零的整数,这些整数的公因子中最大的整数称为它们的最大公因子。
记作 (a1,a2,,an)(a_1, a_2, \dots, a_n)

引理1(递归法则)

如果 a1,A2,,Ana_1, A_2, \dots, A_n是不全为零的整数,则有 (A1,A2,,An1,An)=(A1,A2,,An2,(An1,An))(A_1, A_2, \dots, A_{n-1}, A_n) = (A_1, A_2, \dots, A_{n-2}, (A_{n-1}, A_n))
证明
根据最大公因子的性质,(A1,A2,,An)(A_1, A_2, \dots, A_n) 由逐步计算两两最大公因子得到,因此可以通过递归的方式计算最大公因子。

扩展欧几里得算法(ExGCD)

扩展欧几里得算法(ExGCD)是一种利用递归方法求解方程 ax+by=gcd(a,b)ax + by = \text{gcd}(a, b) 的方法,通常用于求解整数解 xxyy,即通过此方法得到线性组合的具体值。
假设已知 a=99a = 99b=78b = 78,我们希望找到满足 99x+78y=399x + 78y = 3 的整数解。可以通过扩展欧几里得算法来求解。
首先,我们利用欧几里得算法求得 gcd(99,78)=3\text{gcd}(99, 78) = 3。接着,使用扩展欧几里得算法,从后往前推导出 xxyy 的值。
以下是详细步骤:
  • 步骤1:计算 99997878 的最大公因数。
    99=78×1+2199 = 78 \times 1 + 21
    78=21×3+1578 = 21 \times 3 + 15
    21=15×1+621 = 15 \times 1 + 6
    15=6×2+315 = 6 \times 2 + 3
    6=3×2+06 = 3 \times 2 + 0
    所以 gcd(99,78)=3\text{gcd}(99, 78) = 3
  • 步骤2:从后往前推导解。
    由于 3=152×63 = 15 - 2 \times 6,将 66 替换为 211×1521 - 1 \times 15,得到:
    3=152×(211×15)=3×152×213 = 15 - 2 \times (21 - 1 \times 15) = 3 \times 15 - 2 \times 21
    然后继续替换 15152121
    3=3×(783×21)2×21=3×7811×213 = 3 \times (78 - 3 \times 21) - 2 \times 21 = 3 \times 78 - 11 \times 21
    再替换 2121991×7899 - 1 \times 78
    3=3×7811×(991×78)=11×99+14×783 = 3 \times 78 - 11 \times (99 - 1 \times 78) = -11 \times 99 + 14 \times 78
    所以,得到特解 x=11x = -11y=14y = 14

ExGCD 的实现

扩展欧几里得算法的具体代码如下:
CPP
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;
}
该算法通过递归实现,首先递归到 b=0b = 0 时停止,然后从后往前计算每一层的 xxyy 值。

定理7(整数线性组合与最大公因数的关系)

aabb 是正整数,则所有 aabb 的线性组合构成的集合与所有 gcd(a,b)\text{gcd}(a, b) 的倍数组成的集合相同。
证明
  1. 首先证明每个 aabb 的线性组合是 d=gcd(a,b)d = \text{gcd}(a, b) 的倍数。由于 ddaabb 的最大公因数,因此 dd 可以表示为 d=ma+nbd=ma+nb,其中 mmnn 是整数。因此,任何形式为 ma+nbma+nb 的线性组合必然是 dd 的倍数。
  2. 现在证明每个 dd 的倍数也是 aabb 的线性组合。由于定理6,存在整数 rrss 使得 d=ra+sbd=ra+sb 。对于任何整数 jjjd=j(ra+sb)=(jr)a+(js)bjd=j(ra+sb)=(jr)a+(js)b ,因此 jdjdaabb 的线性组合。
从而,得出结论:aabb 的所有线性组合与 gcd(a,b) \text{gcd}(a,b) 的所有倍数构成的集合是相同的。

推论2(互素的定义)

整数 aabb 互素当且仅当存在整数 mmnn 使得:
ma+nb=1ma + nb = 1
证明
  1. 如果 aabb 互素,即 gcd(a,b)=1\text{gcd}(a, b) = 1,根据定理 6,存在整数 mmnn 使得:
    ma+nb=1ma + nb = 1
  2. 反之,如果存在整数 mmnn 使得 ma+nb=1ma+nb = 1,则根据定理 6,得出 gcd(a,b)=1\text{gcd}(a, b) = 1
因此,得出结论:整数 aabb 互素当且仅当存在整数 mmnn 使得 ma+nb=1ma + nb = 1

二元一次不定方程

引理2:

如果 aabbcc 是正整数,且满足 gcd(a,b)=1\gcd(a, b) = 1abca \mid bc,则 aca \mid c
证明
由于 gcd(a,b)=1\gcd(a, b) = 1,根据贝祖定理,存在整数 xxyy 使得:
ax+by=1ax + by = 1
将等式两边同时乘以 cc,得到:
acx+bcy=cacx + bcy = c
这表明 acx+bcy=cacx + bcy = c,这是 aabcbc 的线性组合,而因为 abca \mid bc,所以 aa 可以整除这个线性组合 acx+bcyacx + bcy
因此: aca \mid c
由此证明了引理2。

定理8:

aabb 是整数,且 d=gcd(a,b)d = \gcd(a, b)。如果 dcd \nmid c,则方程 ax+by=cax + by = c 没有整数解;如果 dcd \mid c,则存在无穷多个整数解。
此外,如果 x0,y0x_0, y_0 是方程的一个特解,那么所有解可以表示为: x=x0+bdn,y=y0adnx = x_0 + \frac{b}{d}n, \quad y = y_0 - \frac{a}{d}n 其中 nn 是整数。
证明
  1. 如果 dcd \nmid c,方程 ax+by=cax + by = c 没有整数解
    根据定理7,方程 ax+byax + by 的结果是 dd 的倍数。
    因此,如果 dcd \nmid c,则方程 ax+by=cax + by = c 没有整数解。
  2. 如果 dcd \mid c,存在整数解
    根据定理7,方程 ax+by=cax + by = c 有解的充要条件是 dcd \mid c
    因为 d=gcd(a,b)d = \gcd(a, b),根据贝祖定理,存在整数 sstt 使得:
    as+bt=das + bt = d
    由于 dcd \mid c,存在整数 ee 使得:
    de=cde = c
    则有:
    c=de=(as+bt)e=a(se)+b(te)c = de = (as + bt)e = a(se) + b(te)
    这样,x0=sex_0 = sey0=tey_0 = te 是方程 ax+by=cax + by = c 的一个特解。
  3. 证明无穷多个解的存在
    x=x0+bdnx = x_0 + \frac{b}{d}ny=y0adny = y_0 - \frac{a}{d}n,其中 nn 是整数,来证明这些解的存在性。
    (1) 证明任意一对 (x0+bdn,y0adn)(x_0 + \frac{b}{d}n, y_0 - \frac{a}{d}n) 是方程的解
    代入 x=x0+bdnx = x_0 + \frac{b}{d}ny=y0adny = y_0 - \frac{a}{d}n 到方程 ax+by=cax + by = c 中:
    a(x0+bdn)+b(y0adn)=ax0+by0+abdnabdn=ax0+by0a\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
    由于 ax0+by0=cax_0 + by_0 = c,所以:
    a(x0+bdn)+b(y0adn)=ca\left(x_0 + \frac{b}{d}n\right) + b\left(y_0 - \frac{a}{d}n\right) = c
    因此,(x0+bdn,y0adn)(x_0 + \frac{b}{d}n, y_0 - \frac{a}{d}n) 是方程的解。
    (2) 证明方程的任意解都可以表示为 (x0+bdn,y0adn)(x_0 + \frac{b}{d}n, y_0 - \frac{a}{d}n)
    假设 (x,y)(x, y) 是方程的一个解,即:
    ax+by=cax + by = c
    又因为 ax0+by0=cax_0 + by_0 = c,两式相减得到:
    a(xx0)+b(yy0)=0a(x - x_0) + b(y - y_0) = 0
    即:
    a(xx0)=b(yy0)a(x - x_0) = -b(y - y_0)
    两边同时除以 dd 得到:
    ad(xx0)=bd(y0y)\frac{a}{d}(x - x_0) = \frac{b}{d}(y_0 - y)
    由于 ad\frac{a}{d}bd\frac{b}{d} 互质,根据引理2,ad(y0y)\frac{a}{d} \mid (y_0 - y),因此存在整数 nn 使得:
    adn=y0y\frac{a}{d}n = y_0 - y
    由此得出:
    y=y0adny = y_0 - \frac{a}{d}n
    同理,bd(xx0)\frac{b}{d} \mid (x - x_0),因此存在整数 nn 使得:
    bdn=xx0\frac{b}{d}n = x - x_0
    从而得出:
    x=x0+bdnx = x_0 + \frac{b}{d}n
    因此,方程的任意解都可以表示为:
    x=x0+bdn,y=y0adnx = x_0 + \frac{b}{d}n, \quad y = y_0 - \frac{a}{d}n
    其中 nn 是整数。

评论

0 条评论,欢迎与作者交流。

正在加载评论...