余数非数
小编来今天给同学们带来的趣味数学故事是:余数非数 。
每天10分钟头脑大风暴,开发智力,培养探索能力,让你成为学习小天才 。
故事适合年级:小学【余数非数】趣味小故事: 《孙子算经》之“物不知数”是这样说的:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二 。问物几何?
元代秦九韶的解答则是:三人同行七十稀,五树梅花廿一支,七子团圆正半月,除百零五便得知 。
这歌诀隐含一种算法 。本文就以此为引子陈述一种新的“数”——有限域的元素 。
固定一个正整数 6. 通过对它做除法,可以把所有整数分成 6 类:
被6 整除的数 {...-12,-6,0,6,12,18,...}、 除6余1的数 {...,-11,-5,1,7,13,19,...}、除6余2的数{...,-10,-4,2,8,14,20,...}、...、 除6余5的数{...,-13,-7,-1,5,11,17,...} 。
倘若将这6个类分别记为 [0],[1],[2],[3],[4],[5], 称为 “模6的同余类” 。这些类之间可以进行运算:比如,从 [4] 里取一个数 10,再从 [5] 里取一个数 17,把它们相加,10+17=27,它落在类 [3] 里,这样,我们定义 [4]+[5]=[3] 。如果在 [4],[5] 两个类 里取另外的代表,比如取 [4]里的-2, [5]里的 11, 相加得 -2+11=9, 还是落在 [3] 里 。很容易证明,无论怎么选这两个代表,加起来都落在 [3] 里 。所以我们现在定义的 [4]+[5]=[3] 这种运算是合理的 。
同样的实验表明,减法和乘法也可以类似地定义:比如,[1]-[2]=[5], [2]× [3]=[0]. 这说明模6的同余类之间是可以做运算的!
不止如此,这些运算还具有跟普通运算相似的性质:
比如,[0]+[3]=[3], [0]+[4]=[4],零的同余类在加法中没有效果;
[0]× [1]=[0], [0]× [3]=[0],零的同余类乘上别的同余类都得 [0];
[1]×[2]=[2]; [1]×[3]=[3], 表明 1 的同余类在乘法中没有效果(换句话说,[1]是乘法的单位元) 。
有了乘法单位元,就可以试图定义“倒数”(严格地说,“倒类”):
比如,[5] ×[5]=[1], 就定义 [5]-1=[5].
可惜,不是 每个同余类都有 “倒数”,[2] 就没有倒数,这是因为 [2]×[0]=[0], [2]×[1]=[2], [2]×[3]=[0], [2] × [4]=[2], [2]×[5]=[4], 都不等于 [1].
哪些同余类有倒数呢?答案是:那些与模数互素的同余类有倒数 。比如,模数为6的时候,[1] 和 [5] 有倒数,因为它们与 6 互素 。(互素的意思是,最大公约数为 1 。在这种情况下可以应用欧几里得的《几何原本》中记载的 “辗转相除法” 来求同余类的倒数 。)
显然,同余类的性质跟模数有关 。前面举的例子都是以6为模数,即考虑除6的同余类 。严格的记号必须将这个关联反映出来 。我们应该记上述例子中的同余类为 [4]6, 括号中是余数,下标是模数(除数) 。
现在来尝试研究一下《孙子算经》的“物不知数”问题 。3,5,7的最小公倍数是105. 如果找到一个解 x, 则 x+105 还是一个解,因为它们在除以 3, 5, 7 时“同余”,如果 x 满足 “物不知数” 的条件,x+105 也必然满足 。用这篇文章里介绍的数学语言,我们说 “物不知数” 问题的解是一个 “模数为105的同余类” 。现在我们只需要求得此同余类中任何一个数即可 。
我们把 “物不知数” 的条件列出:[x]3 = [2]3, [x]5 = [3]5, [x]7= [2]7.
求解的办法实际上是 “拆分” 。也就是说,我们先来求三个数 a, b, c, 分别满足较简单的条件:
[a]3 = [1]3, [a]5 = [0]5, [a]7 = [0]7.
[b]3 = [0]3, [b]5 = [1]5, [b]7 = [0]7
[c]3 = [0]3, [c]5 = [0]5, [c]7 = [1]7
如果能简单地求得这三个数 a, b, c, 那么我们容易看到,x = 2a+3b+2c 即为原 ”物不知数“ 问题的一个解 。这是因为我们刚刚介绍过的同余类四则运算律 。验证如下:
[x]3 = [2a+3b+2c]3 = 2 [a]3 + 3 [b]3 + 2 [c]3 = 2 [1]3 = [2]3,
[x]5 = [2a+3b+2c]5 = 2 [a]5 + 3 [b]5 + 2 [c]5 = 3 [1]5 = [3]5,
[x]7 = [2a+3b+2c]7 = 2 [a]7 + 3 [b]7 + 2 [c]7 = 2 [1]7 = [2]7,
那么,问题就归结为求解 a, b, c 三个数. 先看 a. 它满足的条件是,同时被 5, 7 整除,被 3 除余 1 。由于 5, 7 互素,所以 a 必须被 5 × 7 = 35 整除 。很容易找到 35 的倍数中被 3 除余 1 的数:a=70. 这个求 a 的过程就是秦九韶的所谓 “三人同行七十稀” 。
同理可得 b=21, 即秦九韶所谓 “五树梅花廿一支”,以及 c=15, “七子团圆正半月” 。所以我们得到了 “物不知数” 问题的一个解:
2a+3b+2c = 2 × 70+3 × 21 + 2 × 15 = 233.
之前已经提到,加上或者减去 3, 5, 7 的公倍数 105,仍然还是一个解 。所以我们得到绝对值最小的解:233-105 × 2 = 23. 此即 “ 除百零五便得知” 。
可以看到,解决这个问题的关键,其一在于“拆分”,其二在于求最简单形式的同余方程组的解 。而此问题的解的存在性和唯一性,都是由这最简单形式的同余方程组决定的 。我们可以仔细地来审视一下求得 a 的过程 。其实这个过程中更关键的未知数是一个乘数 w, 满足 [5 × 7 × w]3= [1]3. 一旦求得这个 w, 则 a = 5 × 7 × w. 前面已经提到过,这个方程表明,w 应该是 5 × 7 的同余类倒数(以3为模数) 。而这个倒数存在当且仅当 5 × 7 与 3 互素 。当然,在这个例子里,5 × 7 的确与 3 互素 。普遍而言,这个条件则是此类问题存在唯一解的充分必要条件 。