在数学发展的过程中,我们会遇到许多看似简单,却有着特殊来历的符号。比如等号之后,你可能还会注意到一个很奇怪的符号:
它看起来很像我们熟悉的等号,却又比等号多了一条横线。既然一个等号已经能够表示“相等”,数学家为什么还要专门创造另一个长得这么像的符号?更奇怪的是,如果我们写:
这句话究竟是什么意思?17 明明不等于 5!
如果按照我们从小学开始学习的普通算术,写成 显然是一个错误。可是在一种特殊的数学体系里,17 和 5 确实可以被认为“处在同一个位置”。这个体系,就是今天所说的模算术体系(Modular Arithmetic)。而模算术真正有意思的地方,并不是 “17 为什么可以和 5 联系起来”,而是一个更加深层的问题:
数学家为什么要创造一种新的方式,来判断两个数字在什么意义下可以被看作“相同”?
从钟表开始理解模算术#
如果第一次接触模算术,最好的入口其实不是数学课本,而是一只钟表。
我们平时使用的整数,是沿着一条无限延伸的数轴不断向前增长的:
但是钟表并不遵循这条规则。当指针走过 12 以后,它不会继续寻找一个写着 “13” 的位置,而是重新回到 1,然后再往后走,又经过 2、3、4,直到再次绕回 12。
因此,如果我们只关心钟表上的位置,那么 13 和 1 实际上落在同一个地方,14 和 2 也落在同一个地方:
这里的“模 12”,可以先用一个非常直观的方式理解:
每经过 12,就重新绕一圈。
所以,25 点在钟表上仍然对应 1 点:
37 点仍然对应 1 点:
于是:
这些在普通整数世界里彼此不同的数字,在模 12 的世界里却拥有相同的位置。
这就是模算术最基本的思想:我们暂时不关心一个整数究竟有多大,而只关心它除以某个数以后留下的“位置”。
那么,17 为什么可以和 5 放在一起?#
现在回到文章开头那个看起来有些离谱的式子:
其实它一点也不神秘。
因为:
而 12 正好是我们规定的模数。换一种更加熟悉的说法,17 除以 12 以后,余数是 5,因此我们可以写成:
29 也一样:
24 是 12 的倍数,所以:
41 也是如此:
因此:
这些数字虽然一个比一个大,但在模 12 的意义下,它们都属于同一个位置。
如果把这种关系写成一般形式,就是:
它的严格定义是:
也就是说, 和 的差能够被 整除。
因此:
真正表达的并不是 “17 等于 5”,而是:
17 和 5 的差是 12 的倍数,所以它们在模 12 的意义下同余。
这里的“同余”非常重要,因为它恰好说明了 “=” 和 “≡” 之间真正的区别。
“=” 和 “≡” 到底有什么区别?#
我们完全可以同时写下:
以及:
这两句话不仅不矛盾,而且分别描述了两个不同层次的事实。
- 第一句话是在普通整数的意义下说的:17 和 5 是两个不同的整数。
- 第二句话则是在模 12 的意义下说的:17 和 5 的差是 12 的倍数,因此它们属于同一个同余类别。
所以,“≡” 绝不是 “=” 的另一种写法,“=” 问的是:
两个数本身是不是完全相同?
而 “≡” 问的是:
在规定了一个模数以后,这两个数是不是具有相同的余数?
这其实是一个非常有意思的数学思想,因为数学并没有修改 17 这个数字,也没有把 5 变成 17,它只是改变了我们观察这些数字时所关注的性质。
就像钟表一样,在普通整数世界里,13 就是 13。但是如果问题只关心它在一个 12 格循环中的位置,那么 13 和 1 就会被归到同一个位置。
数学对象没有改变,改变的是我们观察数学对象的方式。
余数原本只是计算结果,高斯把它变成了一种关系#
这里就涉及高斯真正重要的地方了。
人类当然不是到了 1801 年才第一次知道余数。早在很久以前,人们就已经会计算 “17 除以 12 余 5” 这样的结果。
但 “余 5” 与 “17 和 5 同余” 之间存在一个非常重要的区别。
前者主要是在描述一次计算的结果,而后者则是在定义两个整数之间的一种关系:
一旦我们把这种关系用一个专门的符号表示出来,就可以开始系统地研究它的性质,而不必每次都重新描述“两个数相减以后能够被 12 整除”。
1801 年,高斯(Carl Friedrich Gauss)在《算术研究》(Disquisitiones Arithmeticae)中引入三横符号 “≡” 来表示同余或相关的恒等关系。它后来成为模算术中最重要的符号之一,也成为等号及其相关关系不断分化的一个重要历史节点。
因此,如果一定要说高斯做了什么,那么更加准确的说法并不是“高斯发明了余数”,而是:
高斯把原本零散的整除和余数问题,组织成了一套可以用统一符号进行研究的理论。
这一步看起来只是增加了一个符号,实际上却改变了数学家能够处理问题的方式。
更有意思的是:同余真的可以进行计算#
如果模算术只是告诉我们 “17 和 5 的余数相同”,它还不会显得特别神奇。真正有意思的地方在于:同余关系可以保留下来进行加法和乘法。
例如,我们已经知道:
那么两边同时加上 8,就得到:
也就是:
而 25 和 13 的余数都是 1,所以:
乘法同样成立。
因为:
所以两边同时乘以 8:
于是:
而 136 和 40 除以 12 后的余数都是 4,因此:
这件事情的重要性在于,我们不必一直带着原来的大数字进行计算。
例如,假设我们想知道:
这个数字看起来很大,但在模 12 的世界里,它实际上非常“轻量”,因为:
所以在后续的模 12 运算中,我们可以把 暂时看成 11。一个很大的整数,就这样被压缩成了一个很小的状态。这已经不再只是“求余数的小技巧”,而开始表现出一种非常强大的数学结构。
无限多个整数,可以被压缩成有限个位置#
假设我们研究的是模 12。整数本身有无限多个:
但是如果我们只关心它们除以 12 后的余数,那么所有整数最终只会落入 12 个类别:
例如:
全部属于余数为 5 的类别。而:
全部属于余数为 8 的类别。于是,原本无限多个整数,就被划分成了有限个类别。
这其实是模算术最值得理解的地方之一:它不是简单地把数字变小,而是在重新组织数字之间的关系。
如果把无限延伸的整数轴想象成一条道路,那么模 12 就像把这条道路首尾相接,卷成了一个圆。
在这条道路上,从 0 出发向前走 12 步,又回到了原来的位置;再走 12 步,仍然回到那里。
因此:
而:
这就是钟表为什么能够成为模算术的直观模型:钟表本身就是一个非常自然的“模 12”系统。
从“数字”变成“位置”:剩余类是什么?#
到这里,我们可以再向前走一步。如果:
那么我们其实可以不再把这几个数字分别看待,而是把它们当成一个整体。
这个整体就是一个剩余类(Residue Class)。
例如,模 12 下与 5 同余的所有整数,可以写成:
这个集合里的所有整数虽然彼此不同,但它们在模 12 的意义下拥有完全相同的位置。
于是,我们研究的对象又发生了一次变化。
最开始,我们关心的是:
17 到底是多少?
然后,我们开始关心:
17 除以 12 后余多少?
再往后,我们开始关心:
17 属于哪个同余类别?
而到了现代数学的视角,我们甚至可以进一步问:
这些同余类别之间具有什么运算结构?
这一步非常重要,因为数学的关注点开始从“具体数字”逐渐转向“对象之间的关系以及关系所形成的结构”。
沿着这条道路继续前进,就会逐渐进入现代抽象代数。
为什么模算术值得成为一个完整的数学体系?#
如果我们只是用模算术来判断钟表上的时间,那么它当然很方便,但似乎还没有必要把它提升到一套数学理论的高度。
真正让它变得重要的,是它提供了一种非常普遍的数学方法:
把一个原本无限、复杂的问题,转换成一个有限而又可以运算的结构。
例如,如果我们只关心一个整数除以 3 后的余数,那么无论这个整数有多大,它最终都只可能处于三个状态:
如果研究模 10,那么只需要考虑:
而如果研究模 2,那么整个世界甚至只剩下两个状态:
从这个角度看,模算术真正做的事情并不是简单地“把大数字变小”,而是把一个无限的整数世界投影成一个有限的结构,同时尽可能保留我们真正关心的运算关系。
这也是它后来能够在数论以及许多现代数学和计算领域中发挥作用的重要原因。
在现代计算机科学中,mod 运算本质上也是在询问一个数字除以某个数以后落在哪个位置。循环结构、哈希、密码学、编码等领域都能看到这种思想的应用。当然,这些现代应用并不是高斯在 1801 年提出同余理论时所针对的目标,而是后来数学与计算技术不断发展之后,从这种结构中自然生长出来的应用。
一个很小的符号,打开了一扇新的数学世界#
现在再回头看最开始那个让人有些困惑的式子:
它其实可以分成三个层次来理解。
第一层是在普通整数世界里:
17 和 5 是两个不同的整数,这一点没有任何问题。
第二层是在模 12 的意义下:
因为它们相差一个 12 的倍数,所以属于同一个同余类别。
第三层则是把这种关系进一步抽象成剩余类:
此时我们已经不再把注意力放在某两个具体的整数上,而是在研究一个由无穷多个整数构成的整体。
也就是说,从 “17” 和 “5” 开始,我们最后研究的已经不是某两个数字,而是:
这些数字之间的关系,以及这些关系能够形成怎样的数学结构。
这正是现代数学越来越抽象的一个重要方向,而这也解释了为什么 “≡” 非常适合出现在等号的故事之后。
等号解决的是:
两个东西什么时候可以被认为相等?
而同余进一步提出了一个更加大胆的问题:
如果我们改变判断“相同”的标准,会产生怎样的数学世界?
答案就是:一个全新的数学结构。
从等号,到同余,再到现代数学#
1557 年,罗伯特·雷科德(Robert Recorde)在《智慧的砥石》(The Whetstone of Witte)中使用今天熟悉的 “=” 来表示相等。之后,这个符号逐渐传播,并最终成为现代数学中表达相等关系的标准符号。
几个世纪以后,数学家面对越来越复杂的问题,又不断创造出新的关系符号。
1801 年,高斯在《算术研究》中使用 “≡” 表示同余关系。后来数学中又逐渐形成了“不等于”、“近似相等”等不同关系的专门表示。如果只从感官上来看,这似乎只是数学符号越来越多了。但如果从数学思想的发展来看,真正发生变化的其实是另一件事:
人类能够表达和操作的思想越来越复杂了。
- “=” 让我们能够用极其简洁的方式表达相等关系;
- “≡” 让我们能够表达在特定模数下的同余关系;
- 变量让我们能够研究未知;
- 坐标让代数与空间建立联系;
- 积分让数学能够描述连续变化;
而后来出现的集合符号、逻辑符号以及抽象代数语言,则让数学开始直接研究结构、关系,甚至研究数学本身。
所以,一个数学符号真正重要的,往往不是因为它让某个公式少写了几个字,而是因为:
它让人类获得了一种过去很难表达、甚至无法表达的思维能力。
模算术就是一个非常漂亮的例子。它从一个极其朴素的问题开始:两个数除以同一个数以后,为什么会留下相同的余数?但沿着这个问题继续追问,我们最终得到的却不是一个更方便的除法技巧,而是一种新的数学视角:
我们可以把无限多个整数按照某种关系重新组织起来,让它们形成一个有限、循环,而且仍然能够进行运算的世界。
而这个世界的入口,就是一个看起来很像等号,却并不等于等号的符号:
所以,下次再看到:
不要把它简单地读成 “17 等于 5”,更准确的理解应该是:
17 和 5,在模 12 的世界里处于同一个位置。
而从这个看似简单的想法继续向前走,你会遇到剩余类、群、环、域,并最终进入现代抽象代数的世界。
这也是数学史中非常迷人的一件事:
一个看起来只是为了方便计算而产生的符号,最后往往会打开一种全新的看世界的方法。
