前言
笔者的课程需要群论,故恶补一下数论基础知识
参考:高教社《初等数论》(第四版)
本文是笔者自己的笔记,所以在描述上面可能偏口语化,请读者见谅
整除与整除的基本性质
整除的定义
首先我们从整除的核心定义开始重新回顾它
::: align-center
对整数m,n\in \mathbb{Z},我们说“m整除n”记作m\mid n,是指m\ne0且存在整数(0和负数也算)q使得n=qm
:::
常用的说法还有:
- m是n的因子(divisor/factor)
- n被m整除(is divisible by)
- n是m的倍数(multiple)
如果不存在这样的整数,就记作m \nmid n
要注意的是,0不当因子,即m\ne 0,但对于0当n,即当被除数时,每个非零整数都整除0,因为q可以取0,此时m可以任意,有0=0\cdot m
整除的基本性质
- 如果a\mid b且a\mid c,则a\mid (b+c)(公因子对和仍然是公因子)
- 如果a\mid b且b\mid c,则a\mid c(传递性)
- 如果a\mid b,则对任意整数k,a\mid bk(乘以倍数不改变因子关系)
证明:
(1)若a\mid b,a\mid c则有b=ka, c=qa,则有b+c=(k+q)a,由整除定义得a\mid (b+c)
(2)若a\mid b则有b=qa,b\mid c又有c=kb,故有c=qa=qka,由整除定义得a\mid c
(3)易得
另外可以由1和3得到整除得线性封闭推论:若a\mid b且a\mid c,则对任意整数k,l,都有a\mid (kb+lc),此推论非常重要
适当因子、极大因子与素数
定义m和n是正整数
- 若m\mid n且0
,那么m是n的适当因子(Proper Divisor),当n>1时m必然有平凡适当因子1,而当n=1时其没有任何的适当银子。需要注意的是当n>1时若我们将1去掉,则此时剩下的叫非平凡因子(Nontrivial Divisor) - 若m是适当因子,并且对所有q\in \mathbb{N},只要m\mid q且q\mid n,就必有q=m或q=n,那么m是n的极大因子(Maximal Divisor)。
考虑n的素因子分解n=p_1^{r_1}p_2^{r_2}\cdots p_s^{r_s},则极大因子正好是\frac{n}{p_i} - 若n\ge 2,唯一的正因子是1和n,那么此数就叫素数(Prime)。2是唯一的偶素数,1不是素数
素数定理
素数定理(Prime Number Theorem)是关于素数个数的一个重要数学定理。它表明,当x趋近于无穷大时,不超过x的素数个数\pi(x)与\frac{x}{\ln x}的比值趋近于1,这表明随着x的增大,从不超过x的整数中选一个数是素数的概率大约为\frac{1}{\ln x}
需要注意的是,对于大整数,手算加法的复杂度为O(n),手算乘法的复杂度为O(n^2),而如果要对这个大整数进行素因数分解,首先需要检查所有小于等于\sqrt{n}的素数
为什么要检查到\sqrt{n}?首先由因数的对称性:对于大于1的正整数n,若存在整数a(1能整除n,则必然存在另一个整数b=\frac{n}{a}满足
- a\times b=n
- 若a>\sqrt{n}则b=\frac{n}{a}<\sqrt{n}
假设 n 是合数(非素数),但所有\le \sqrt{n}的整数都无法整除n。根据因数对称性,所有\ge \sqrt{n}的整数也无法整除n(因为它们的配对因数\le \sqrt{n},而已假设这些配对因数不整除 n)。这与n是合数(存在非1和自身的因数)矛盾,因此假设不成立。若n是合数,必然存在\le\sqrt{n}的因数;若\sqrt{n}的整数都无法整除n则n是素数
假设试除到\sqrt{n}时,我们已经把n中所有\le\sqrt{n}的素因数都除尽了,得到剩余数m(m = n÷(所有已记录的素因数))。此时
- 若m=1:说明n的所有素因数都\le \sqrt{n},分解完成,没有大于\sqrt{n}的素因数
- 若m>1:则m必然是素数,且m>\sqrt{n},反证如果m是合数,那么由上面的推导m必有一个素因数p\le\sqrt{m},但有前提条件m\le n\Rightarrow \sqrt{m}\le\sqrt{n},于是得到p\le\sqrt{n},这与我们的假设“已经把所有小于\sqrt{n}的素因数除尽”矛盾,因此m只能是素数,故大于\sqrt{n}的素因数(如果存在),只会以 “最后剩余的m” 的形式出现,我们不需要查找大于\sqrt{n}的素数
扯回来,再由素数定理得到小于\sqrt{n}的素数个数为\pi(\sqrt{n})=\frac{\sqrt{n}}{\ln\sqrt{n}},复杂度O(\sqrt{n}),而在计算机中考虑到数字n由二进制存储,它的实际存储位数b=floor(\log_2(n)),姑且按\log_2n计算,得到\sqrt{n}=2^{\frac{1}{2}\log_2 n}=2^{\frac{b}{2}},实际复杂度为指数级O(2^{\frac{b}{2}}),若n是一百位整数(b约为332),那么在使用朴素算法的情况下现有的超级计算机进行素因数分解也需要宇宙级时间,因为大整数素因数分解的困难使得它成为RSA等非对称加密算法的基石,另一应用广泛的由ECDSA为代表的椭圆曲线加密,它基于椭圆曲线离散对数问题,这里不再提到
除法算法和GCD
带余除法
设a,b\in\mathbb{Z},则存在唯一的整数q,r,使得a=bq+r,并且0\le r,其中q叫做商(quotient),r叫做余数(remainder)
注意b必须是正数,否则余数r不唯一,余数r必须落在[0,b),这样才能保持唯一性
证明:
固定a,b, b>0,考虑集合S=\{a-kb: k\in\mathbb{Z},a-kb\ge 0\},这是所有形如a-kb且非负的数的集合。
首先说明S非空,若a\ge 0,取k=0就有a\in S,如果a<0,选一个合适的负整数k让a-kb\ge 0即可。
其次,由于S是非空的负整数集合,因此由良序原理(自然数集的每个非空子集都有一个最小元素),它有是最小元的,记为r,由r\in S得存在整数q使得r=a-qb,即a=bq+r且r\ge 0
再证明r,反证若r\ge b那么r-b\ge 0,又r=a-qb于是r'=a-(q+1)b\ge 0,说明r'\in S,且r'
最后证唯一性,若a=bq+r=bq'+r',且0\le r,r',做差得到b(q-q')=r'-r,右边的绝对值小于b,但左侧是b的倍数,若要让b的某个倍数得到比b还小的整数这个数只能是0,故r'-r=0,即r'=r
最大公约数GCD
GCD的定义
设a,b是非负整数,且不同时为0,d称为a和b的最大公约数(Greatest Common Divisor, GCD),记作gcd(a,b),当且仅当
- d是a和b的公共因子:d\mid a且d\mid b
- 对于任意公共因子c,都有c\le d
通常我们只取正的gcd,所以它一般是一个正整数(或者当1的个数为0时等于另一个的绝对值,见下)
GCD的性质
对任意整数a,b,c
- gcd(a,b)=gcd(b,a)(对称性)
- 若a\ne 0,则gcd(a,0)=|a|
- gcd(a,b)=gcd(|a|,|b|)
- 若d=gcd(a,b),则gcd(\frac{a}{d},\frac{b}{d})=1
粗略地证明:
(1)公因子谁跟谁都是一样的,故当然是对称的
(2)gcd(a, 0)要保证整除0,而所有非0整数都能整除0,现在要求找一个还能整除a自己的因子,最大的正因子就是|a|
(3)由整除的基本性质3,因子关系对负号不敏感,d\mid a可立即得d\mid (-a),所以公共因子的集合,对(a,b)和(|a|,|b|)是一样的,因此最大公约数也相同
(4)也就是约掉gcd后变成互素,因为d已经吸收了所有的公共因子,再往下就没有别的公共因子了,俩一除剩下的俩数自然是互素的
欧几里得算法(辗转相除法)
给定正整数a\ge b>0,反复使用带余除法算法
- a=q_1b+r_1, 0\le r_1
- b=q_2r_1+r_2, 0\le r_2
- r_1=q_3r_2+r_3, 0\le r_3
- 继续...
r_{k-2}=q_kr_{k-1}+r_k,0\le r_k - 最后某一步会出现余数为0的情况r_{n-2}=q_nr_{n-1}+0
此时gcd(a,b)=r_{n-1},即最后一个非零余数就是gcd(a,b)
需要注意的是:余数列b > r_1 > r_2 >\cdots \ge 0 严格递减、且非负,因此必定在有限步内降到0
证明:
(1)证明r_{n-1}是a和b的公因子
反推,从最后一步开始,r_{n-2}=q_nr_{n-1},所以r_{n-1}\mid r_{n-2},由因为r_{n-1}整除自己,有r_{n-1}\mid r_{n-1},由因为r_{n-3}=q_{n-1}r_{n-2}+r_{n-1},由整除的基本性质1得到r_{n-1}\mid r_{n-3},向前递推得到r_{n-1}\mid a且r_{n-1}\mid b
(2)证明任意公共银租d都整除r_{n-1}
正推,若d\mid a且d\mid b,第一步有r_1=a-q_1b,由整除的基本性质1得到d\mid r_1,向后递推得到d\mid r_{n-1}
故得到r_{n-1}是一切公因子的“最大的代表”,也就是我们的gcd(a,b)了
若a,b各有至多n位十进制数字,那么欧几里得算法在至多O(n)步内结束
贝祖恒等式与扩展欧几里得算法
Bézout 恒等式(又叫做裴蜀恒等式)阐明:
::: align-center
设a,b\in\mathbb{Z}不同时为0,则存在整数x,y使得gcd(a,b)=xa+yb
:::
它表明gcd(a,b)可以倍写成a和b的一个整数线性组合,其证明是通过将欧几里得算法得到等式有后向前回代得到的,而我们“回代”的这个过程+欧几里得算法=扩展欧几里得算法,所谓“扩展”,是指在求gcd的同时扩展出对应的线性组合系数x,y
互素与欧几里得引理
互素
定义:整数a,b互素(Coprime/Relatively Prime),当且仅当gcd(a,b)=1
注意:互素不代表a,b这俩本身是素数,而只是说这俩没有大于1的公共因子
互素的特征(贝祖形式)
由贝祖恒等式可以立即得到:a,b互素当且仅当存在整数x,y满足ax+by=1
证明:
(1)充分性:如果gcd(a,b)=1,又贝祖恒等式可以得证
(2)必要性:如果有整数x,y满足ax+by=1,a,b的任何公共因子既要整除a又要整除b,由整除的基本性质1得到也要整除ax+by,由等式得到要整除1,而能整除1的只有\pm 1,gcd通常取最大正数,即得gcd(a,b)=1,a,b互素
贝祖形式经常被用来证明互素,在考虑用贝祖形式证明互素时只要能构造出ax+by=1就行
GCD的性质4的证明
再次回顾前面GCD的性质4:若a,b非零,d=gcd(a,b),则gcd(\frac{a}{d},\frac{b}{d})=1,即\frac{a}{d},\frac{b}{d}这俩是互素的
证:
首先使用贝祖恒等式,有d=gcd(a,b),两边同除d(d\ne 0)后满足贝祖形式,充分必要条件得\frac{a}{d},\frac{b}{d}这俩肯定是互素的
互素时的整除性质
当a,b非零且互素(gcd(a,b)=1)时,若a\mid c且b\mid c,则ab\mid c
证明:
由a\mid c,b\mid c和整除定义得到c=ra=sb,其中r,s\in\mathbb{Z},其次由a,b互素,写为贝祖形式得到xa+yb=1,两侧同时乘c后,用c=ra=sb带入整理后得到ab(sx+ry)=c,故ab\mid c
欧几里得引理
设p是素数,a,b\in\mathbb{Z},如果p\mid ab,则p\mid a或p\mid b(或者二者均成立)
证:
假设p\nmid a,只要得到p\mid b证明即完成
因为p是素数,又p\nmid a,则p和a的唯一公共因子就是1,故gcd(p,a)=1,由贝祖恒等式得到xp+yb=1,两边同时乘b得到pbx+aby=b,显然p整除自己,有p\mid p,由整除的基本性质3得到p\mid pbx,又由题目条件p\mid ab得到p\mid aby,由整除的基本性质1得到p\mid (pbx+aby)即p\mid b,得证
欧几里得引理告诉我们:素数很贪婪,若其整除某个整数,则要么其“吃掉”其中的一个因子,要么“吃掉”另一个因子
两个重要推论
推论1:若p是素数且p\mid a_1a_2\cdots a_n,则p\mid a_k对某个k成立
证:由欧几里得引理立得
推论2:若p和q_1,\cdots,q_n都是素数,而且p\mid q_1\cdots q_n,则p=q_k对某个k
证:由推论1知p\mid q_k对某个k,而素数之间能整除只有一种情况就是俩相等
广义欧几里得引理(互素版本)
进一步扩展欧几里得引理,得到广义版本:
若gcd(m, n)=1且m\mid nt则m\mid t
证:
因为gcd(m,n)=1,由贝祖恒等式得到mx+ny=1,两侧同乘t得到m(tx)+n(ty)=t,显然m\mid m(tx),又由已知条件m\mid nt和整除的基本性质得到m\mid m(tx)+n(ty)即m\mid t
二元一次不定方程(线性丢番图方程)
定义
一个二元一次线性丢番图方程是形如
::: align-center
ax+by=c
:::
的方程,其中a,b,c\in\mathbb{Z}已知,我们要寻找整数解x,y\in\mathbb{Z}
可解性判据
设a,b,c为非零整数,d=gcd(a,b),方程有整数解当且仅当d\mid c
证:
(1)充分性:如果(x_0,y_0)是整数解,即ax_0+by_0=c,因为d\mid a且d\mid b,由整除的基本性质得到d\mid (ax_0+by_0),即d\mid c
(2)必要性:如果d\mid c,则c=kd,由题目条件d=gcd(a,b)和贝祖恒等式得到d=x'a+y'b,两边同时乘k得到c=dk=kx'a+ky'b,故得到(x_0,y_0)=(kx',ky')是一个整数解
解的结构
已知d=gcd(a,b),且d\mid c,并且(x_0,y_0)是一个已知得特解,则该方程的通解为
::: align-center
(x,y)=(x_0+k\frac{b}{d},y_0-k\frac{a}{d}),k\in\mathbb{Z}
:::
验证
\begin{aligned}a(x_0 + k\frac{b}{d}) + b(y_0 - k\frac{a}{d})&= ax_0 + ak\frac{b}{d} + by_0 - bk\frac{a}{d} \\&= ax_0 + by_0 + k\frac{ab}{d} - k\frac{ab}{d} \\&= ax_0 + by_0\\&= c\end{aligned}
证:
设特解为(x_0,y_0),则ax+by=ax_0+by_0=c,做差得到a(x-x_0)=b(y_0-y),两边同除d=gcd(a,b)得到\frac{a}{d}(x-x_0)=\frac{b}{d}(y_0-y),可得\frac{a}{d}\mid \frac{b}{d}(y_0-y)由GCD的性质4得到gcd(\frac{a}{d},\frac{b}{d})=1,接着由广义欧几里得引理得到\frac{a}{d}\mid (y_0-y),所以存在k使得y_0-y=k\frac{a}{d},即y=y_0-k\frac{a}{d},回代a(x-x_0)=b(y_0-y)得到x=x_0+k\frac{b}{d}
一般求解步骤
求解二元一次不定方程,通常遵循
- 通过欧几里得算法求得d= gcd(a,b)
- 通过判据d\mid c判断是否存在整数解
- 若解存在,通过扩展欧几里得算法获得一个ax+by=c的一个特解(x_0,y_0)
- 构造通解(x,y)=(x_0+k\frac{b}{d},y_0-k\frac{a}{d})
- 再按照约束求得k,获得实际情况下的特解
算数基本定理
定理
每个整数n>1都可以写成若干个素数的乘积n=p_1p_2\cdots p_k且此分解在“因子顺序”下是唯一的,即
- 存在性:任意n>1,一定能分解为素数的乘积(可能只有1个因子,因为n自个可能是素数)
- 唯一性:如果n有两种素因子分解,除了排列顺序,所有素数底和指数都一样
证明:
(1)存在性:
对于2,显然成立,假设对于所有2\le m
a. 若n本来就是素数,那么它已经是素数的乘积,无需证明
b. 若n不是素数,则n存在适当因子(Proper Divisor)d,1
若p_1=ab且1,则a\mid p_1,又因p_1是n的适当因子,有p_1\mid n,由整除的传递性得到a\mid n且1,这与p_1是最小适当因子矛盾,故p_1不可分解,没有其他因子,则p_1为素数
则现在n可以写为p_1n_1,其中n_1=\frac{n}{p_1}
证毕
(2)唯一性:
假设有两种素因子分解n=p_1p_2\cdots p_r=q_1q_2\cdots q_s,其中p_i,q_j都是素数
由等式知p_1\mid q_1q_2\cdots q_s,由欧几里得引理得推论2得p_1=q_j对某个j成立,重排右侧因子,让重排后的q_1等于这个q_j,于是等式变为
::: align-center
p_1p_2\cdots p_r=p_1q_2\cdots q_s
:::
两侧消去p_1,此后对右侧再进行上述过程,逐个配对所有因子,最终得到r=s,并且在适当重排后有p_i=q_i对所有i
推论
推论1:设n=p_1^{r_1}p_2^{r_2}\cdots p_s^{r_s},其中p_1,\cdots,p_s是互不相同得素数,r_i\ge 1,则
- 所有正因子的结构:任一正因子d都形如d=p_1^{e_1}\cdots p_s^{e_s}, 0\le e_i\le r_i
- 因子的个数:因为每个指数e_i都可以在0\cdots,r_i中任选,总共r_i+1种选法,所以正因子总数是(r_1+1)(r_2+1)\cdots (r_s+1)
- 极大因子正好为\frac{n}{p_i},i=1\cdots s,也就是将n的每一个素因子“降一价”
推论2:两个正整数a,b互素当且仅当它们的素因子分解中没有共同的素数
- 如果a,b互素,即d=gcd(a,b)=1,那么就不可能有素数同时整除a和b(最大公因子已经是最小的1了),即没有共同的素数
- 反过来,如果没有共同素数,对a和b的任何公因子d,假如里面有不是素数的因子,则由算数基本定理可以被分解为素因子,而这些公共素因子只能来自两边共有的素数,但是已经提到没有共同的素数了,则a和b互素
全部评论 (0)
暂无评论,快来抢沙发吧~