当从这里开始的时候,你的行囊里不需要太多的东西,只要会整数的加减乘除即可。东西多了不仅帮不了你,反而会成为前进的负担。正如在前两篇中一样,你需要首先抛开一切固有思维,清空大脑,带着孩童般的好奇心重新认识这个世界。由于数论经常出现于奥数和智力题中,它往往被当成一种智力游戏,但随着研究的深入,你需要建立一套理论才能看清本质。我们可以从最简单的定义出发,利用理性思维建立这些理论。做题是学习数论的必经途径,你需要在不断地思考中才能有更深刻的理解,但这里我只打算叙述最基础的思想和结论。
1. 整除
数论研究整数本身(或自然数,语境自明),初等数论主要研究整数之间的关系。整数的运算中,加减是最平凡的,得不出什么深入的结论,从而乘除法是唯一可以着手的地方。考虑一个简单的等式\(ma=b\)(以后若不作特殊说明,所有符号表示整数),任何两个整数之间都可以有\(m,a\)这样的乘法运算,但却并不是所有整数都有等式中\(a\)与\(b\)的关系。为此,当\(a\ne 0\)时,定义满足等式的\(a\)能整除\(b\),或\(b\)被\(a\)整除,\(a\)称为\(b\)的约数,\(b\)称为\(a\)的倍数,记作\(a\mid b\),否则记为\(a\nmid b\)。
仅从定义出发可以得到整除的许多基本性质,这里就不一一列举了,只给出一个最具代表性的:式子(1),即\(a\)的倍数的线性组合仍是\(a\)的倍数。整数集线性组合的这一性质体现了元素之间的共性,以后还会继续深究,这里先举一例来感受其意义。若\(a\mid n,b\mid n\),则有\(ab\mid nb,ab\mid na\),进而有\(ab\mid n(ax+by)\),所以如果有\(ax+by=1\),则有\(ab\mid n\)。
\[a\mid b_{k},(k=1,2,\cdots,n)\:\Rightarrow\: a\mid b_1x_1+b_2x_2+\cdots+b_nx_n\tag{1}\]
考虑\(n\)的所有倍数的集合\({kn}\),它的元素有无穷多个,且性质是平凡的,不多阐述。现在来考虑\(n\)的所有约数,显然它们是有限的,但我们似乎还得不出更多的结论。不妨先考察一类特殊的数:如果\(p>1\)除了\(\pm 1\)和\(\pm p\)外没有其它约数,\(p\)称为质数或素数,反之叫合数,今后我们会约定俗成地用\(p,q\)表示素数。直观上素数是不能再分解的数,它们是整数的基本因子,任何整数都可以通过有限步分解为素数的乘积。
一个自然的问题是,这样的分解唯一吗?你固有的知识可能使你对这个问题相当地自信,但如果冷静思考地一番,就会发现这种自信其实是没有根据的。它的证明并不十分显然,这里通过反证法来推导。假设有某些整数的素数分解不唯一,则存在最小的这样的数,并设它有两个分解式\(a=p_1p_2\cdots p_n=q_1q_2\cdots q_m\),其中\(m,n>1\),并且素数按大小排列。由\(a\)的最小性知\(p_i\ne q_j\),假设\(p_1>q_1\),考察式(2)。容易证明后一分解式中不含\(q_1\),从而\(b<a\)有两个不同的分解式。这与\(a\)的最小性矛盾,故所有整数都存在唯一的的素数分解式,即表达式(3)唯一。这个证明最早由高斯给出,被称为算术基本定理,它使得整数可以被完全解析。
\[b=a-q_1p_2\cdots p_n=q_1(q_2\cdots q_m-p_2\cdots p_n)=(p_1-q_1)p_2\cdots p_n\tag{2}\]
\[a=p_1^{e_1}\cdot p_2^{e_2}\cdot\cdots p_s^{e_s}\tag{3}\]
现在来看数\(a\)的所有约数,容易知道它们的分解式必定是式子(4)。若记\(a\)共有\(\tau(a)\)个约数,且它们的和为\(\sigma(a)\),则有公式(5)(6)。
\[p_1^{e‘_1}\cdot p_2^{e‘_2}\cdot\cdots p_s^{e‘_s},\quad(0\leqslant e‘_k\leqslant e_k)\tag{4}\]
\[\tau(a)=\prod_{k=1}^s{\tau(p_k^{e_k})}=\prod_{k=1}^s{(e_k+1)}\tag{5}\]
\[\sigma(a)=\prod_{k=1}^s{\sigma(p_k^{e_k})}=\prod_{k=1}^s{\dfrac{p_k^{e_k+1}-1}{p_k-1}}\tag{6}\]
来思考几个问题热热身吧:
• 求满足\(\tau(n)=6\)的最小整数;
• 求\(\sum\limits_{d\mid a}{\dfrac{1}{d}}\)的值。
2. 公约数
有了算术基本定理,整数之间的倍数关系就基本清楚了。而对于两个任意的整数(不一定有倍数关系),只能通过它们共同的约数或倍数来取得联系。两个数\(a,b\)共同的约数称为它们的公约数,最大的那个叫最大公约数,记作\((a,b)\),类似还有公倍数和最小公倍数\([a,b]\)的概念,最大公约数为\(1\)的两个数称为互素或既约的。这些概念都有一些比较简单的性质,可以通过算术基本定理去证明,后面会罗列。公约(倍)数为研究整数之间的关系提供了便利,但它们的定义并不依赖于算术基本定理,你完全可以仅从定义出发得到那些常用结论,算术基本定理只是提供了一种方法而已。
公约数一定程度上体现了整数之间的相关程度,互素则表现了整数之间的无关性。这个观念为我们分析整数集的结构提供了一个好的思想,不大于\(m\)的所有数可以按照和\(m\)的相关程度分类,这个话题我们会在后面展开。现在来考虑一下与\(m\)无关的(互素)数的个数\(\varphi(m)\),对素数\(p\)显然有\(\varphi(p)=p-1\)和\(\varphi(p^e)=p^{e-1}(p-1)\),利用容斥原理排除掉不互素的数之后可以得到公式(7)(下一篇会有另一种方法证明)。
\[\varphi(m)=m\prod_{k=1}^s{(1-\dfrac{1}{p_k})}=\prod_{k=1}^s{\varphi(p_k^{e_k})}\tag{7}\]
算术基本定理虽然很强大,但用它来求公约数或进行整数关系分析的代价太大,并且也很难得到进一步的结论,这时必须引入别的工具。在不做素数分解的情况下,分析整数关系最直观的方法就是带余除法,对任意整数\(a\ne 0,b\),存在唯一数对\(m,r\)满足式子(8)。由\(r=b-ma\)知\(a,b\)的公约数必定是\(r\)的约数,并且\(r\)更小。如果继续对\(a,r\)做这样的运算,我们一定可以得到\(a,b\)的最大公约数。这便是辗转相除法的基本思想,早在欧几里得的《几何原本》中就有记载(故又称Euclid算法),熟悉算法的你一定也不陌生,这里就不展开细节了。
\[b=ma+r,\quad(0\leqslant r<\left|a\right|)\tag{8}\]
带余除法为整数的分析提供了一个简单有效的方法。比如我们再回头考虑一下式(1)中的所有线性组合,首先\((b_1,b_2,\cdots,b_n)\)显然也是每个线性组合的约数。考察线性组合中的最小正数\(c\),如果它不是\(b_k\)的约数,使用带余除法\(b_k=mc+r\),\(r=b_k-mc\)也是线性组合但却更小。所以\(c\)是\(b_1,b_2,\cdots,b_n\)的公约数,结合刚才的结论可知\(c=(b_1,b_2,\cdots,b_n)\)。
最大公约数可以看做是整数间的一个基本代数运算,我们已经看到有很多不同的途径来得到它,而这些途径并不依赖于最大公约数的定义。这就让我们想到,其实可以将它们看成是最大公约数的等价定义,在不同的场合灵活使用,可以得到更简洁的方法。以下便列举了这些等价定义,你可以尝试证明它们的等价性。
(1)原始定义:最大的公约数;
(2)约数的公倍数:是所有公约数的最小公倍数;
(3)素数基本定理:素数分解式的公共部分;
(4)线性组合:线性组合的最小正数;
(5)辗转相除法:辗转相除法得到的最小正数。
作为一个基本运算,需要稍微研究一下最大公约数的基本性质,请尝试通过不同途径证明下面的基本性质:
(1)\(m(a_1,a_2,\cdots,a_n)=(ma_1,ma_2\cdots,ma_n)\);
(2)\((a_1,a_2,\cdots,a_n)=((a_1,a_2),\cdots,a_n)\);
(3)若\((m,a)=1\),则有\((a,mb)=(a,b)\);
(4)若\(m\mid ab,(m,a)=1\),则\(m\mid b\);
(5)若\(a\mid m,b\mid m,(a,b)=1\),则\(ab\mid m\);
(6)\((a,b)[a,b]=ab\)。
公约数虽然定义简单,但却变化多端,当和其它知识结合起来时,问题会变得很困难。你需要熟练掌握初等数学中各种变形技巧,并需要足够的想象力和创造力。课本中的习题是最好的锻炼场所,你不能绕过那一步,这里仅列几例以抛砖引玉。
• 已知\(ad-bc=\pm 1\),\(u=am+bn,w=cm+dn\),求证\((u,w)=(m,n)\);
• \(a\)为奇数,则必有\(d<a\)使得\(a\mid 2^d-1\)。设这样数最小为\(d_0\),则\(a\mid 2^h-1\)成立的充要条件是\(d_0\mid h\);
• 证明梅森(Mersenne)数\(M_p=2^p-1\)两两互素;
• 求证\(1+\dfrac{1}{2}+\cdots+\dfrac{1}{n}\)不是整数;(提示:构造一个整数与之相乘后不为整数)
• 若\((a,b)=1\),则对任意\(m\),\(a+kb,k=0,1,2,\cdots\)中有无数个与\(m\)互质的数。(提示:无穷递降)
3. 闲话素数
话说素数的确非常重要,后面我们还会看到它更多的性质,这里再多说两句。首先,欧几里得在《几何原本》回答了素数的个数问题,假设仅有有限个素数\(p_1,p_2,\cdots,p_n\),考察表达式\(p_1p_2\cdots p_n+1\)。它不以任何\(p_k\)为约数,从而它也是素数,与假设矛盾,这就证明了素数有无穷多个。该证明使用了构造法和反证法,它的美妙是数学史上惊艳的一笔,你不妨可以用同样的方法解决以下问题。
• 相邻素数之间的间隔可以有任意大;
• 证明费马数\(F_n=2^{2^n}+1\)的素因子互不相同,从而素数有无穷多个;
• 使用数列\(a_{n+1}=a_n^2-a_n+1,(a_0=2)\),证明素数有无穷多个;
• 求证形如\(4k+3\)的素数有无穷多个;
• 如果\(n\mid (n-1)!-1\),则\(n\)必为素数。
根据算术基本原理,并使用级数理论(后续课程),容易有以下著名的欧拉公式(式子(9))。这个神奇的公式将调和级数与所有素数扯上了关系,这也成为了研究素数的一个突破口,巍峨耸立的黎曼猜想就是对它的扩展研究。顺便提一句,因为调和级数是发散的,故由此此也可以证明素数有无穷多个。
\[1+\dfrac{1}{2}+\cdots+\dfrac{1}{n}+\cdots=\prod_{k=1}^{\infty}{(1-\dfrac{1}{p_k})^{-1}}\tag{9}\]
关于素数,还有一些自然的问题是:如何判定一个数是否为素数?如何找出一定范围内的所有素数?它们的分布是怎样的?是否有素数的通项公式?这些问题是很难回答的,它们也是数论的难点,很多问题都还没有被解决。古希腊时期的Eratosthenes筛法是目前仍在使用的筛选素数的方法,它逐步划去每个素数的倍数,从而仅余下素数,这在一般的算法教材里都有介绍。另外一般用\(\pi(x)\)表示不大于\(x\)的素数的个数,公式(10)是就是著名的素数定理,它表明了素数的平均密度。该定理最早由勒让德和高斯作为猜想提出,将近一百年后才被人用复变函数的理论所证明,再过了50年才有了初等证法。关于素数的问题我们就不深究了,它们也不是这里能回答得了的。
\[\pi(x)\sim \dfrac{x}{\ln{x}},\quad(x\to\infty)\tag{10}\]