谈韩信点兵问题

谈韩信点兵问题

  数学的解题,包括问题、答案、求得答案的思路过程,以及过程中所结晶出来的普遍概念、 方法和数学理论。只有答案与计算技巧的堆积无法显现数学的妙趣。
  在《孙子算经》里(共三卷,据推测约成书于西元400年左右), 下卷的第26题,就是鼎鼎有名的“孙子问题”:

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?

  将它翻译成白话:这里有一堆东西,不知道有几个;三个三个去数它们,剩余二个;五个五个去数它们,剩余三个;七个七个去数它们,剩余二个;问这堆东西有几个?精简一点来说:有一个数,用 3 除之余 2;用 5 除之余 3;用 7 除之余 2;试求此数。
  用现代的记号来表达:假设待求数为 x,则孙子问题就是求解方程式:

x=2 (mod 3)x=3 (mod 5)x=2 (mod 7)

其中 a=b (mod n) 表示 ab 可被 n 整除。
  这个问题俗称为“韩信点兵”(又叫做“秦王暗点兵”、“鬼谷算”、“隔墙算”、“剪管术”、“神奇妙算”、“大衍求一术”等等),它属于数论 (Number theory) 中的“不定方程问题”(Indeterminate equations)。
孙子给出答案:

答曰:二十三

  事实上,这是最小的正整数解答。他又说出计算技巧:

术曰:三三数之剩二,置一百四十;五五数之剩三,置六十三;七七之数剩二,置三十。 并之得二百三十三。以二百一十减之,即得。 凡三三数之剩一,则置七十;五五数之剩一,则置二十一;七七数之剩一,则置十五。 一百六以上,以一百五减之,即得。

  这段话翻译成数学式就是:

x=2×70+3×21+2×152×105=140+63+30210=23
此数是最小的正整数解。
  为了突显 70、21、15、105 这些数目,明朝的程大位在《算法统宗》(1592年)中,把它们及解答编成歌诀:

三人同行七十稀,五树梅花廿一枝,
七子团圆正半月,除百零五便得知。

  另外,在宋代已有人编成这样的四句诗:

三岁孩儿七十稀,五留廿一事尤奇,
七度上元重相会,寒食清明便可知。

  这些都流传很广。“上元”是指正月十五日,即元宵节,暗指“15”;而“寒食”是节令名,从冬至到清明,间隔105日,这段期间叫做“寒食”,故“寒食”暗指“105”。
  本文我们要来探索韩信点兵问题的各种解法,它们的思路过程与背后所涉及的数学概念和方法。

观察、试误与系统列表

  按思考的常理,面对一个问题,最先想到的办法就是观察、试误 (trial and error)、投石问路、收集资讯,再经系统化处理,这往往就能够解决一个问题;即使不能解决,对该问题也有了相当的理解,方便于往后的研究或吸收新知。
首先考虑被 3 除之余 2 的问题。正整数可被 3 整除的有 3,6,9,12,,所以被 3 除之余 2 的正整数有 2,5,8,11,14,。其次,被 5 除之余 3 的正整数有 3,8,13,18,。最后,被 7 除之余 2 的正整数有 2,9,16,23,。将其系统地列成表一,以利观察与比较。

表一
表一

   我们马上可从表一看出23是最小的正整数解。
  有一位四年级的小学生,他耐心地继续计算下去,得到第二个答案是128,第三个答案是233,接着又归纳出一条规律从23开始,逐次加105都是答案(这是磨练四则运算的好机会)。从而,他知道孙子问题有无穷多个解答。不过,小学生还没有能力把所有的解答写成一般公式:
x=23+105n,nN0     (1)

其中, N0={ 0,1,2,3,}
  根据机率论,一只猴子在打字机前随机地打字,终究会打出莎士比亚全集, 其机率为 1。这是试误法中,最令人惊奇的一个例子。人为万物之灵, 使用试误法当然更高明、更有效。总之,我们可以(且必须)从错误中学习。

分析与综合

  根据笛卡儿(Descartes, 1596~1650)的解题方法论:面对一个难题,尽可能把它分解成许多部分,然后由最简单、最容易下手的地方开始,一步一步地拾级而上,直到原来的难题解决。换言之,你问我一个问题,我就自问更多相关的问题,由简易至复杂,铺成一条探索之路。
现在我们考虑比孙子问题更一般的问题:
问题1. 试求出满足下式之整数 x

这功夫法上单写图片描述

孙子问题是 r1=2r2=3r3=2 的特例:


   为了求解这个特例,我们进一步考虑一连串更简单的特例。 基本上,这有两个方向:剩余为 0 或只有单独一个方程式。

单独一个方程式

  欲求

x=3q1+2       (4)

的整数解x,显然解答的全体为
...,7,4,1,2,5,...

这些解答可以写成一个通式:
x=3n+2,nZ     (5)

其中Z表示整数集,事实上,(5)式只是(4)的重述。
进一步,通解公式(5)也可以写成
x=3n+5,nZ

x=3n+(4),nZ

等等,换言之,通解公式可以表成 x=3n,nZ ,与 x=2(x=4 )这两部分之和。前一部分是 x=3q1 之通解,后一部分是 x=3q1+2 的任何一个解答(叫做特解)。
  这告诉我们,欲求 x=3q1+2 之通解,可以分成两个简单的步骤: 先求 x=3q1 的通解,再求 x=3q1+2 的任何一个特解,最后将两者加起来就是 x=3
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值