第一章 数与代数

代数的背景故事

在我们的学生时代,黑板上出现的xy,代表着这样一个始点,于此数学跨越了算术的范畴,而通过获取一种自有语言进入了更高的领域。迈进了代数的大门,数学这门学科由此发展出令人惊讶的力量,给我们展现了以其他任何方式都无法发现的内容。现代科学以数学为基础,而数学便是通过对代表着被关注量的符号进行代数运算而运作的。确切的物理关系通过代数这样一种工具被揭示出来,包括最著名的质能方程E = mc2,以及许多其他方程。就像爱因斯坦的狭义相对论中出现的这则等式一样,方程式都是以实验为基础的物理模型的结果。尽管如此,这种关系本身就是通过代数来表达的。代数赋予如下重要的结论以威力,即能量与质量是一回事儿;而这就是位于底层的代数无可置疑的正确性。代数构成了所有现代系统化研究的基础。尽管这些研究的成果可以被融合进科学软件之中,但若没有代数,进步是不可能的。

“algebra”(代数)一词源于阿拉伯语词汇“al-gebr”,意思是“折断部分的复位”。11世纪时,或许正是伊斯兰世界代表着数学领域最复杂巧妙的文明。不过,那时还没有见于现代文本中那种类型的代数运算;中世纪的数学写作是修辞式的,一切都用言语描述,这种风格遍及马可 · 波罗所处的世界。我们也许能辨别出的一种代数,直到17世纪才出现。纸张的稀缺可能阻碍了数学符号体系的自然发展;不过也应该意识到,古代学者面对着诸多遮蔽了算术之根本数学面貌的障碍。我们在执行代数运算时会引入任意符号,最常见的是xy,用来表示确定而未知的数,并根据算术法则对这些符号进行处理。无论数xy可能是什么,支撑我们所做的一切的理由是,在我们运算中出现的关系是真实的,因为它们是我们初始假设及适用于所有数的法则的结果,与其特定的数值无关。用代数符号来表示未知量是一种便利的缩简;诚然简洁肯定有助于推理,但代数真正的力量源于符号赋予阐释的普适性,这使得它们能以一种强有力的方式被运用,而这种方式是词汇无法单独胜任的。

为了认识到代数的潜力,我们要能以无限制的方式移动我们的符号,即自如地利用算术运算,特别是成对的基本运算:加法与减法、乘法与除法。为此,我们需要一套适用的计数系统。比如,我们如果认为负值毫无意义而加以拒绝,或者进一步从根本上不把零看作一个数,便会受到妨碍而自我否定代数所赋予的探索未知量的世界的自由。我们认为代数世界的存在是当然的。不要说在其被恰当地理解及得以发展之前,甚至在其开始被窥视之前,就有大量的困惑需要清除。过去的智者会震惊于现代的某位学生能够轻松地用代数来彻底地解决问题;而在他们看来这些问题是不可能的,甚至可能是难以清晰描述的。比如,学校中的代数便足以证明整数的平方根如 ,要么是另一个整数,要么根本不是分数。古希腊学者为这个问题付出了巨大的努力,并且运用他们所掌握的几何方法来证明大到 的一些特定平方根不是分数。然而,这个平常的问题难倒了他们。不过,这个问题和其他许多超越古人所及范围的问题,完全可以为牛津大学出版社通识读本系列的读者所理解,正如你即将读到的那样。


计数系统

为了驾驭代数的力量,我们需要一套满足其需求的计数系统。部分要求是,自由地运用适合于任意数或未知数的符号来执行四个基本的算术运算。但是,普通的自然数集合就这一点来说是有缺陷的。1, 2, 3, …这些由计数产生的数被称为自然数;因为一旦我们开始对事物进行计数,这些数或大或小自然而然地就出现了。自然数的集合用ℕ表示,ℕ对于加法运算和乘法运算是封闭的。这意味着假如我们由两个自然数出发,可以把它们相加或相乘,而结果始终是一个自然数。不过,减法则是另一回事儿。减法是一个数减去另一个数,是加法的反向运算或逆运算,而数学家更乐意用后者来表述。就像3 — 5这样的算术题中的减法运算,把我们从ℕ中带了出来,而进入人们平常所说的负整数的范围。出现这种困难时,我们不会放弃,而是采取如下态度,即我们的计数系统目前不够完备,应该扩展,使得我们的计算能继续下去。

数的典型范例遍布高等数学及工程的所有领域,即通常所说的复数域,由ℂ表示。从ℕ一路到ℂ的旅程很长,直到19世纪才真正完成。在此之前,关于不同于自然数的数,对其真实性、意义及有效性还有许多哲学上的烦恼。不过,我们将毫不迟疑地介绍所需类型的数。

说到此处,我们首先为ℕ关联零这个数,用0来表示,即使得任何数加上或减去后数值都不会改变的那个数。必须承认0并不是我们有时称之为自然数的正整数中的一员;不过,0仍然是个数,因而有必要在我们的算术系统中找到其自身的位置。接下来,我们为每个正数引入一个负的镜像;例如, —6便是6的负“搭档”。

尽管对于这门学科的发展并非必需,不过要描绘并解释数的行为,通常最简单的方式是想象数沿着数轴排列。这是一条水平线,整数就被置于沿线长等间距的点上。我们把0放在中间,正整数以自然升序向右行进,而负整数则占据零左侧的镜像位置。

所有整数的集合,如该集合的名称那样,包括正整数、负整数以及零,用符号ℤ表示;而ℚ代表有理数的集合,由所有分数及对应的负数组成。集合ℤ包含于ℚ,因为整数n即等于有理数n/1。(我们说,ℤ是ℚ的子集;同样,ℕ是ℤ的子集。)不过,像3/9和7/21这样的两个有理数被认为是相等的,因为二者都可化简为相同的分数,即1/3。任何正有理数都有唯一的表达式,即约分至最简项的分式a/b,这里的ab除了1之外没有别的公约数。有理数也可以描绘成按其自然顺序分布在数轴上,稠密而均匀地在整个数轴上展开。

一个数m(或正或负)加一个正数n,我们就从m出发,在数轴上向右移动n个点位,而减n则是左移n个点位。在集合ℤ中,每个数n都有一个相反数 —n,我们现在用这个性质把减法定义为与负数相加。我们声明,减去任何数n,即指加上其相反数—n,所以加上一个负数—n,就是在数轴上左移n个点位。那么,要减去一个负数—n,我们就加上它的相反数n。换句话说,要减去负数—n,我们就在数轴上右移n个点位。

这种观察事物的方式,对于如下这样的算式


(—1)+4 = 3, 6+(—11) = —5, (—8)+6 = —2, 1 —(—9) = 1+9 = 10,


便得出了熟悉的求和结果,正如图1所示那样。

图1 数轴上的加法与减法

以上式子中,—1及其他负数前后的括号并不是必需的;但被引入是为了避免以一个运算符来开启一个算式,或是为了避免比如“+”和“—”两个运算符间的冲突。之所以有这样做的必要,是因为我们赋予了“—”两个略微不同的含义:既用于表示取一个整数的相反数,此时是作用在单一数上的运算符;也用来表示减法,这时是作用在有着特定顺序的两个数上的运算符。

至此,我们尚未提及任何你可能称之为代数法则的内容,来解释我们的算术是如何运作的。针对我们这些法则的合理解释,更确切地说,是取决于将减法的概念扩展至已按自然的线性方式排列的整个整数集合。我们在第二章中来探究支配算术运算的法则,并解释这些法则是如何扩展的,以便当我们从一个计数系统转到一个包括前者但更大的系统时,这些法则仍然适用。


数的因数分解

尽管一个整数除以另一个整数通常会得到一个并不属于整数的分数,但用一个整数除以另一个整数还是有可能得到一个整数的;而这是如何发生的,以及什么时候会发生,相关性质是很重要的,并且在我们将要遇到的其他代数系统如多项式中也会出现类似的问题。因此,我们现在就来说说整数除法的主要性质。我们要开始使用幂记号(比如把2×2×2写作23),还有“小于”号(<)和“小于等于”号(≤)(例如,4 < 7及—3 < 2,正如各个实例中那样,数轴上的第一个数都在第二个数的左侧)。当我们知道正在处理字母比如ab所表示的数的乘法时,通常就把乘号看作默认的而把算式写成ab的形式,或者有时也写作a · b,而不是a×b。我们倾向于回避繁琐的乘号,所以有时也会把2×(—3)×4这样的算式写成(2)(—3)(4)。

我们有一个整数a及另一个整数b,若b能写成b = ac,那么a就是b的因数1或除数,此处c本身也是一个整数(同理,那么c当然也是b的因数)。素数是像71这样的整数,它恰有两个正因数,一个必须是1,另一个则必须是该数本身。大于1而不是素数的整数称为合数,因为它是由更小的因数组合而成的。例如,72 = 8×9。我们说8是72的因数,或者说8整除72,或者说72是8的倍数:我们有时把这种关系记作8|72,它仅是“8为72的因数”的简略表述形式而已。尽可能一步步地对给定某数的因数进行分解,最终会得出该数的素数分解。对于上例,72 = 8×9 = 23×32。我们本可以用另一种方式求出72的素数分解,即72 = 6×12 = (2×3)×(4×3) = (2×3)×(2×2×3);不过,将素因数从最小到最大重新排列,得到的是跟之前一样的结果;于是我们说23×32是72的素数分解。“算术基本定理”告诉我们,任意自然数n的素数分解(用按升序排列的素因数来表示)是唯一的。这种唯一性可以由数的更为基本的性质,即“欧几里得引理”2推导出来。该性质表明,若素数p整除ab的乘积,记作p|ab,那么p或是a的因数或是b的因数(或者可能是二者的因数)。“欧几里得引理”的一个等价表述是,若ab都不是素数p的倍数,那么它们的乘积ab也不是。这个性质尽管看起来合理可信,却并非不言自明,而我们在这里也不打算证明欧几里得引理。不过,我们稍后会在本节进一步解释该引理为什么成立。(本书关于数的章节详细阐释了整数的所有性质,而这些性质于此都被认为是成立的。)

一个自然数a除以另一个自然数b,一般用如下方法。即要用ba,我们就从a中将b辗转减去多次,次数比如记作q,直到余项r < b。这样,我们便有a = bq+r。这个算式是唯一的:qr都只有唯一的值,使得该式成立;切记,我们要确保0≤rb —1。也有些特殊情况:比如,恰好当a < b时,q = 0,此时r = a。更有意思的是,正好当b|a时,r = 0,此时a/b = q

来看一个有代表性的示例,若a = 72且b = 13,那么72 = 13×5+7,这样我们有q = 5而r = 7。对于给定的ab,来求算式a = bq+r的过程,被称为“带余除法”3

我们在算术中首次遇到的一个基本代数思想,是关于两个正整数ab的最大公约数的,它也被称为最大公因数4。顾名思义,ab的最大公约数或最大公因数,就是ab的公因数中最大的那个数d;因为ab总有至少一个公因数,即1这个数,所以最大公因数必定存在。如果ab两个数的最大公因数是1,那么我们就说这两个数互为素数5。例如,15 = 3×5与28 = 22×7便互为素数(尽管15和28本身并非素数)。不管怎么样,剩下的问题就是我们可以如何计算给定两个数的最大公因数。

最大公因数d可以通过比较ab的素数分解来求出,因为d的素因数恰是ab的公因数。不过,求解最大公因数还有更好的方法,被称为“欧几里得算法”,它不仅更快,而且还揭示了其他有用的关系。我们稍后会解释该算法,但首先要关注公因数的某些基本性质。

比如,假设cab的任意公因数,于是有a = ctb = cs。接下来有任意一个数rr = ax+by,其中xy本身是整数(可能是负数或零),那么c也是r的因数。为了看得更清楚,我们找到并“提取”算式ax+by的公因数c,如下所示:


r = ax+by = ctx+csy = ctx+sy)。(1)


由于tx+sy也是整数,所以c实际上就是r的因数。

(1)式的一个直接结论是,它适用于我们以r = abq来表示的带余除法等式,因为它告诉我们,ab的任意公因数也是r的因数。同理,由a = bq+r,可知br的任意公因数也是a的因数。因此,ab的所有公因数的集合,等同于br的所有公因数的集合;特别地,ab的最大公因数也是br的最大公因数。这让我们能处理br这两个数,而不是直接处理ba。由于r < b,我们现在可以将带余除法应用于(br)这对数并重复该过程,直到ab的最大公因数出现,这就简化了我们求解最大公因数的问题。这一过程被称为“欧几里得算法”6

现在让我们用上述算法来处理a = 189和b = 105这两个数。每一步,我们给要计算的两个数标出下划线,并用小的数去除大的数,且从一行算式列到下一行时就舍弃大的数。余数为0时,表明上一行的余数就是所求的最大公因数,我们即终止该过程:


189 = 1×105+84,

105 = 1×84+21,

84 = 4×21,


所以,189和105的最大公因数就是21(189 = 9×21, 105 = 5×21)。

这些算式本身是有用的,因为它们可以逆推,从而表示初始的两个数ab的最大公因数d。我们从倒数第二个算式开始,并考察d,这种情况下求得21 = 105 — 84。接着,我们依次用每个等式来消除中间的余数:本例中,第一个算式给出84 = 189 — 105,于是最后我们有


21 = 105 — (189 — 105) = 2×105 — 1×189。


此外,有些有趣的理论成果,我们将在第六章来讨论。本节中,我们之前证明了ab的任意公因数c也是任何形如ax+by的数之因数;由于ab的最大公因数d可以表示成这种形式,即可通过倒推“欧几里得算法”的运算过程来求出,那么可知ab的任何公因数c整除它们的最大公因数d。进一步说,a′ = a/db′ = b/d有一个最大公因数1,因为比如假设ta′和b′的一个公因数,那么a′ = ta″且b′ = tb″。我们要证明t = 1。(上撇号的使用是种提醒我们自己的方式,即a′和a″是a的因数:当然,任何新符号都可以使用。)前面的等式意味着a = da′ = dta″以及b = db′ = dtb″,由此可知dtab的一个公因数。然而,由于dab的最大公因数,于是有t = 1,而a′和b′实际上就互为素数。在我们的题例中,a = 189,b = 105,而d = 21;用这个最大公因数来做除法运算,便有189/21 = 9及105/21 = 5,而9和5没有公因数(除1之外)。

两个数ab的最大公因数可以用ax+by这种形式来表示,这一事实处于众多与数相关的代数证明的中心位置,而“欧几里得引理”只是许多例子中的一个。


1 亦称“因子”“约数”。—译注(以下未注明的皆为译注)

2 该引理通常也被称为“欧几里得第一定理”。

3 原文“Division Algorithm”字面即“除法算法”,数学上通常称作“带余除法”。

4 汉译也作“最大公因子”。

5 西文中“prime”一词,汉译也作“质数”。所以,“互为素数”也称“互为质数”,有时也简作“互素”“互质”。

6 汉译更一般地也作“辗转相除法”。