一元多项式环理论中有许多概念和数论相通,尤其是整除关系、辗转相除法、不可约多项式部分。通过考察对比,可以对环的概念认知更加深刻,同时引出环同态、欧几里得整环等概念。而且数论是基础性的知识,在高中数学竞赛和信息竞赛都有涉及,值得恶补一番!
整除
定义
任给两个整数 a,b,其中 b=0,如果存在一个整数 q 使得等式
a=bq
成立,则称 b 整除 a,记作 b∣a,并称 b 是 a 的因数, a 是 b 的倍数。
值得一提的是,整除在 LATEX 中应当以 \mid
指令来输入,而不是直接输入单竖线 |
。区别在于 \mid
能提供合适间隙。同样,不整除符号 ∤ 应当用 \nmid
指令输入。
性质
-
传递性:若 b∣a,且 c∣a,则 b∣a 。
-
加减封闭:若 b∣a,且 b∣c,则 b∣(a±c) ;更进一步地,b∣(au+cv),其中 u,v 为任意整数。
-
有序性:若 b∣a,则或者 a=0,或者 ∣b∣≤∣a∣;这意味着,若 b∣a 且 a∣b ,则 ∣a∣=∣b∣。
-
成对因子:若 b∣a 且 a=0,则 ba∣a 。
-
带余除法:设 a,b 为整数,b>0,则存在唯一的整数 q 和 r,使得
a=bq+r,0≤r<b
q 叫做 a 被 b 除得的不完全商,r 称为余数。
例题
-
对于十进制正整数 n,求证:它能够被 9 整除的充要条件是各数位上的数字之和为 9 的倍数。
Proof
设 n 各数位上的数字之和为 S(n),设 n=ak×10k+⋯+a1×10+a0,其中 0≤ao≤9,ak=0。
则 S(n)=a0+a1+⋯+ak。于是有
n−S(n)=ak(10k−1)+⋯+a1(10−1)
显然 9∣n−S(n) 。由性质2,便有 9∣n⟺9∣S(n) 。
/* 利用性质2考虑和差是常见的证明整除的方法 */
最大公因数
定义
设 a1,a2,⋯,an 是 n 个不全为 0 的整数。若整数 d 是它们之中每一个的因数,则 d 就叫做 a1,a2,⋯,an 的一个公因数。由性质 3,公因数只有有限多个。取其中最大的一个称为 a1,a2,⋯,an 的最大公因数,记作 gcd(a1,a2,⋯,an)。在不引起混淆的情况下,简记为 (a1,a2,⋯,an)。特殊地,若 (a1,a2,⋯,an)=1,则称 a1,a2,⋯,an 互素。
最大公因数的英文是 Greatest Common Divisor,这就是缩写为 gcd 的原因。
辗转相除法
设 a,b 是不全为 0 的整数,且 a=bq+r,则 (a,b)=(b,r) 。
Proof
由 (a,b)∣a,且 (a,b)∣b,于是 (a,b)∣r,即 (a,b) 是 b,r 的公因数,由最大公因数的定义 (a,b)≤(b,r) 。同理, (b,r)≤(a,b) 。因此 (b,r)=(a,b) 。
1 2 3 4
| int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); }
|
辗转相除法是深刻的性质,能作辗转相除法的整环称为欧几里得整环。
裴蜀定理
定理
设 a,b 是不全为零的整数,则存在整数 x,y,使得 ax+by=(a,b) 。
构造性证明
利用辗转相除法
若 a,b 任何一个等于 0,不妨设 b=0,则 (a,b)=a 。这时定理显然成立。
若 a,b=0,由于 (a,b)=(a,−b),不妨设 a>b≥0 。
要证存在整数 x,y 使得 ax+by=(a,b),即证 (a,b)ax+(a,b)by=1 。
令 a1=(a,b)a,b1=(a,b)b,即证满足该关系的两个数 a1,b1,总存在整数 x,y,使得 a1x+b1y=1 。
引理:已知 a,b 为正整数,则 gcd((a,b)a,(a,b)b)=1 。
引理的证明:利用反证法。假设 ∃d>1,使得 d∣∣∣∣∣(a,b)a 且 d∣∣∣∣∣(a,b)a,则有 d(a,b)∣a 且 d(a,b)∣b 。而 d(a,b)>(a,b),这意味着 d(a,b) 成为了新的最大公因数,与 (a,b) 的定义矛盾。故 d=1,即它们互素。
于是根据引理,我们得知 a1,b1 互素。
下面考虑辗转相除法的运算过程,其计算 a1,b1 最大公因数最后得到的结果应当为 1,即
gcd(a1,b1)=gcd(b1,r1)=gcd(r1,r2)=⋯=gcd(rn−1,rn)=gcd(rn,rn+1)=1
根据上面的代码,循环在 rn+1=0 时退出,此时 rn=1 。写出带余除法递推式:
a1b1r1rn−3rn−2rn−1=q1b1+r1=q2r1+r2=q3r2+r3⋯=qn−1rn−2+rn−1=qnrn−1+rn=qn+1rn
写成矩阵形式
[a1b1]=[q1110][b1r1]
[b1r1]=[q2110][r1r2]
[r1r2]=[q3110][r2r3]
⋮
[rn−2rn−1]=[qn110][rn−1rn]
[rn−1rn]=[qn+1110][rnrn+1]=[qn+1110][10]
将下一个矩阵形式代入上一个,得到
[a1b1]=M[10]
其中
M=[q1110][q2110]⋯[qn+1110]
并且 detM=(−1)n+1。设
M=[λτμσ]
由于 qi 是整数,由矩阵乘法,λ,τ,μ,σ 也为整数。进而得到
[a1b1]=[λτμσ][10]=[λτ]
因此 λ=a1,τ=b1,即
M=[a1b1μσ]
由于 detM=(−1)n+1,因此可得
a1σ−b1μ=(−1)n+1
这样一来,对于要解的不定方程 a1x+b1y=1,取 x=σ,y=−μ 或 x=−σ,y=μ 中的一组即为不定方程的解。
非构造性证明
参看维基百科
推论
- 对于 ∀x,y∈Z,f(x,y)=ax+by 的最小正整数取值为 (a,b)。
- 设 a,b 是给定的不全为 0 的整数,则不定方程/线性丢番图方程 ax+by=m,有整数解的充分必要条件是 (a,b)∣m 。
- 两个整数 a,b 互素的充分必要条件是存在整数 x,y,使得 ax+by=1 。
- 存在无穷多组 (x,y),使得 ax+by=(a,b) 。并且当 ab>0 时,x,y 异号。
性质
-
若 m∣a,m∣b,则 m∣(a,b),即 a,b 的任何一个公因数都是其最大公因数的因数;
-
若 (a,m)=1,(b,m)=1,则 (ab,m)=1,即与一个固定整数互素的整数之集关于乘法封闭;
进而,若 (a,b)=1,则 ∀k,l>0,都有 (ak,bl)>0 。
-
设 b∣ac,若 (b,c)=1,则 b∣a 。
-
设 a,b 互素,且 ab=mk(k≥2),则 a,b 都是一个整数的 k 次幂;
一般地,若 a1,a2,⋯,an 互素,且 a1a2⋯an=mk,则 a1,a2,⋯,an 都是一个整数的 k 次幂。
例题
-
∀n∈Z, 求证:9n+412n+5 是既约分数。
Proof
由于 4(9n+4)−3(12n+5)=1,所以 12n+5 和 9n+4 互素。
/* ax+by=1 判断互素是锐利的性质 */
-
设 n 是正整数,求证:(n!+1,(n+1)!+1)=1 。
Proof
由于 (n!+1)(n+1)−[(n+1)!+1]=n,所以 gcd(n!+1,(n+1)!+1)∣n 。
不妨设 (n!+1,(n+1)!+1)=d,则 d∣n,进而得到 d∣n! 。
又因为 d∣(n!+1),所以 d=1 。
-
设 b∣ac,若 (b,c)=1,求证: b∣a 。
-
设 (a,b)=1,求证:(a2+b2,ab)=1 。
Proof
要证 (a2+b2,ab)=1,即证 (a2+b2+2ab,ab)=1,即证 ((a+b)2,ab)=1,只需证 (a+b,ab)=1。
设 (a+b,ab) 的最大素因子为 p,下面证明 p=1。
由 p∣(a+b,ab),则 p∣ab,进而 p∣a 和 p∣b 至少有一个成立。不妨设 p∣a 成立。则由于 p∣a+b,则 p∣b 也一定成立。
因此 p∣(a,b),结合 (a,b)=1, 便可知 p∣1,因此只能有 p=1,即 (a+b,ab)=1。
-
设正整数 a,b,c 的最大公因数为 1,并且 a−bab=c,求证:a−b 是一个完全平方数。
Proof
由题设条件可推出 (a−b)(c−b)=b2 以及 a>b,c>b 。
设 (a,b)=d 及 a=a1d,b=b1d ,进而 (a1,b1)=1 和 (d,c)=1 。
于是 (a−b)(c−b)=d(a1−b1)(c−b)=b12d2,即
(a1−b1)(c−b1d)=b12d
由于 $b_1^2 \mid b_1^2 d \implies b_1^2 \mid (a_1-b_1)(c-b_1d) $ 。由 (a1,b1)=1 可推知 (a1−b1,b12)=1 ,因此只能 b12∣(c−b1d) ,进而 c−b1d=mb12(m≥1)。同理,有 d∣a1−b1 ,进而 a1−b1=nd(n≥1) 。代回上式,得到
mn=1
因此只能有 m=n=1 。于是 d=b12,a1−b1=d 。
于是 a−b=(a1−b1)d=d2 是完全平方数。
-
两种不同面值 a,b 的硬币,满足 a,b 互素,硬币数量不限,求证:它们不能组合出的最大面额是 ab−a−b 。例如,3 元和 7 元不能支付的价格有 1,2,4,5,8,11 元,所以不能组合出的面额中最大是 11 元。
Proof
由于 (a,b)=1,由推论2,不定方程 ax+by=c 必定有整数解。设 x0,y0 为该方程的一组特解,则方程的所有解可以表示为
{x=x0+bty=y0−att=0,±1,±2,⋯
则非负解为 x=x0+bt≥0,y=y0−at≥0,故有 −bx0≤t≤ay0。又 t∈Z,故有 −[bx0]≤t≤[ay0],即 t 可以取下列值:
−[bx0],−[bx0]+1,⋯,0,1,⋯,[ay0]
因此不定方程 ax+by=c 的非负解的组数为 N0=[bx0]+[ay0]+1 。又 [bx0+ay0]≤[bx0]+[ay0]+1 及 [bx0]+[ay0]≤[bx0+ay0],故
[bx0+ay0]≤N0≤[bx0+ay0]+1
且上式的两个等号有且仅有一个成立。由于 x0,y0 是不定方程 ax+by=c 的特解,故 ax0+by0=c,所以 bx0+ay0=abc 。故
N0=[abc]orN0=[abc]+1
当 c>ab−a−b 时,有
1−a1−b1<abc=bx0+ay0=[bx0]+{bx0}+[ay0]+{ay0}=[bx0]+[ay0]+{bx0}+{ay0}≤[bx0]+[ay0]+bb−1+aa−1
即 1<[bx0]+[ay0]+2,即
故有 N0>0,即这时必有非负解。
当 c=ab−a−b 时,用反证法证明方程 ax+by=ab−a−b 无非负解。若有非负解 x1,y1 ,即 ax1+by1=ab−a−b ,则 ab=a(x1+1)+b(y1+1),由于 (a,b)=1,则必有 a∣(y1+1), b∣(x1+1),得 y1+1≥a,x1+1≥b 。故
ab=a(x1+1)+b(y1+1)≥ab+ab≥2ab
矛盾,因此当当 c=ab−a−b 时,不定方程 ax+by=c 无非负解。
此题在NOI中也可使用扩展欧几里德算法,详细见OI Wiki。
最小公倍数
定义
设 a1,a2,⋯,an 是 n 个整数。若整数 m 是它们之中每一个的倍数,则 m 就叫做 a1,a2,⋯,an 的一个公倍数。在一切公倍数中最小的正数叫做最小公倍数,记作 lcm(a1,a2,⋯,an)。在不引起混淆的情况下,简记为 [a1,a2,⋯,an]。
最小公倍数的英文是 Least Common Multiple,这就是缩写为 lcm 的原因。
定理
两个整数 a,b 的最大公因数和最小公倍数满足
(a,b)[a,b]=∣ab∣
性质
- a,b 的任一公倍数都是 [a,b] 的倍数;
- 若 a1,a2,⋯,an 两两互素,则有
[a1,a2,⋯,an]=∣a1a2⋯an∣
素数
定义
一个大于 1 的整数,如果它的正因数只有 1 和它本身,就叫做素数。否则叫做合数。
性质
- 设 n 是大于 1 的整数,则 n 的除 1 以外的最小正因数 q 是素数。
- 设 p 是素数,n 是任意一个整数,则要么 p∣n,要么 (p,n)=1 。
- 设 p 是素数,a,b 是整数,p∣ab,则 p∣a 或 p∣b 。特别地,若 p∣an,则 p∣a 。
算术基本定理 / 唯一分解定理
任意一个大于 1 的整数 n 能够唯一地分解为
n=p1α1p2α2⋯pkαk
其中 pi<pj(i<j) 是素数。
并且 n 的全部正约数为
d=p1β1p2β2⋯pkβk(αi≥βi≥0)
素数的判定
考虑因数成对出现,因此只需判定 [1,a] 即可。
1 2 3 4 5 6
| bool isPrime(a) { if (a < 2) return 0; for (int i = 2; i * i <= a; ++i) if (a % i == 0) return 0; return 1; }
|
素数的分布
素数有无穷多个
用反证法证明。假设素数只有有限多个,设全体素数为 p1,p2,⋯,pk 。考虑数 N=p1p2⋯pk+1 。显然 N>1,于是根据第一条性质,取它的最小正因数 p>1,则一定有 p∈{p1,p2,⋯,pk}。于是 p∣p1p2⋯pk,又因为 p∣(p1p2⋯pk+1),所以 N 和 N−1 有公因数 p,这与 N 与 N−1 互素矛盾。
素数计数函数
素数计数函数是一个用来表示小于或等于某个实数 x 的素数的个数的函数,记作 π(x) 。
当 x→+∞ 时,π(x)∼lnxx 。
埃拉托斯特尼筛法
要得到自然数 n 以内的全部素数,必须把不大于 n 的所有素数的倍数剔除,剩下的就是素数。
1 2 3 4 5 6 7 8
| int n; vector<char> is_prime(n + 1, true); is_prime[0] = is_prime[1] = false; for (int i = 2; i * i <= n; i++) { if (is_prime[i]) { for (int j = i * i; j <= n; j += i) is_prime[j] = false; } }
|
例题
-
求证:对于任意给定的正整数 n>1,都存在连续 n 个合数。
Proof
由于 4(9n+4)−3(12n+5)=1,所以 12n+5 和 9n+4 互素。
/* ax+by=1 判断互素是锐利的性质 */
-
若整数 a,b 满足 2a2+a=3b2+b,求证: a−b 和 2a+2b+1 都是完全平方数。
-
求证:两个连续正整数之积不能是完全平方,也不能是完全立方。
同余
定义
设 n 是给定的正整数,若整数 a,b 满足 n∣(a,b),则称 a 和 b 模 n 同余,记作
a≡b(modn)
若 n∤(a−b),则称 a 和 b 模 n 不同余,记作
a≡b(modn)
性质
- 反身性:a≡a(modn)
- 对称性:若 a≡b(modn),则 b≡a(modn)
- 传递性:若 a≡b(modn),b≡c(modn),则 a≡c(modn)
- 同余式相加:若 a≡b(modn),c≡d(modn),则 a±c≡b±d(modn)
- 同余式相乘:若 a≡b(modn),c≡d(modn),则 ac≡bd(modn)
- 互素消去律:若 ac≡bc(modn),且 (c,n)=1,则 a≡b(modn)
推论
- 若 a≡b(modm),则 (a,m)=(b,m)
- 设 p 是素数,则 (a+b)p≡ap+bp(modm)
- 由二项式定理,an≡(a−mk)n(modm)
例题
-
设 A 是十进制数 44444444 的个位数字之和,B 是 A 的各位数字之和,求 B 的个位数字之和。
Proof
先证明一个引理:十进制数模 9 与各位数字之和模 9 同余。
设 n=akak−1⋯a1a0,则 n=a0+a1101+⋯+ak−110k−1+ak10k ,且 n 的各位数字之和 S(n)=a0+a1+⋯+ak−1+ak 。令函数 f(x)=a0+a1x1+⋯akxk ,由于 10≡1(mod9) ,因此 f(10)≡f(1)(mod9) ,即 n≡S(n)(mod9) 。
因此 44444444≡A≡B≡S(B)(mod9) 。下面估计 S(B) 的数量级。
44444444<(2104)4444=244441017776
注意到 2>410 ,因此 lg2>1/4 。对上面不等式取对数,得到
lg44444444<17776−4444lg2<17776−1111=16665
因此 44444444 不超过 16665 位,假设各个数位上全都是 9 ,则 A<16665×9=149985 ;取 A 为 139999 ,则 B≤40 ;取 B=39 ,则 S(B)≤12 。
再考虑
44444444≡(−2)4444≡21481×3+1≡2⋅81481≡−2≡7(mod9)
因此 S(B) 只能为 7 。
-
求证:对于任意自然数 n,11987+21987+⋯+n1987 不能被 n+2 整除。
Proof
证明:注意到 1987 是一个素数,利用推论 2
11987+21987+⋯+n1987≡21[1+1+(n+2)1987+(n−1+3)1987+⋯+(2+n)1987]≡1+2n−1(n+2)1987≡1(modn+2)
因此 11987+21987+⋯+n1987 不能被 n+2 整除。