鸡兔同笼
在李渊、李世民、李治(唐高祖、太宗、高宗)祖孙三代当皇帝的唐朝初年,作为教科书的有《孙子算经》、《夏侯阳算经》和《张邱建算经》。现在,上海图书馆中收藏着宋朝刻本的《孙子算经》,被公认为古籍中的善本,非常珍贵。由于考证资料太少,这三部书的作者和编写年代都不甚清楚。虽然名为《孙子算经》,但该书的作者是否姓孙,谁都不能确定,只知道大约成书于公元400年,相当于中国历史上的南北朝时期。
《孙子算经》里有一道对后世极有影响的趣题,原文如下:
今有雉兔同笼,上有三十五头,下有九十四足。问雉、兔各几何?
由于汉高祖刘邦的妻子吕后名字叫“雉”,后世为了避讳,就把“雉”这种动物改称“野鸡”。改朝换代之后,这种禁忌完全没有必要了,“野鸡”的那个“野”字,也就可以取消了。于是,一般提到它时就简称为“鸡兔问题”。
这道题目的意思是说:现有一些鸡和兔,关在同一只笼子里。从上面看,共有35个头;从下面看,共有94只脚。试问有多少只鸡,多少只兔子?
解决这个问题,通常用的是置换法。先假定笼子里头全是鸡,那么应当有70只脚。但是现在实际上有94只脚,相差24只脚。
如果拿1只鸡换1只兔,那么头数不动,脚数要加上20。由此可见,若想加上24只脚,需要换进12只兔子。既然共有35只动物,从而鸡有35-12=23(只)。于是算出了答案:笼中共有鸡23只,兔子12只。
不难看出,以上所说的思路是有普遍性的;不但适用于鸡和兔,也适用于仙鹤和乌龟(在日本等东北亚国家,鸡兔问题就称为“鹤龟算”)、鸵鸟与大象等别的两脚和四脚动物。
然而,《孙子算经》里不用置换法,而是提供了另外一种奇妙解法,原文如下:
术曰:上置头,下置足;半其足,以头除足,以足除头,即得。
特别是“以头除足,以足除头”这句话,极有几分幽默之味,古文不好的人简直读不懂。其实,这里所谓的“除”并非除法的“除”,而是“减”的意思。
如果用白话文加以解读,那么《孙子算经》的解法实际上就等同于下面的操作:
取脚数94的一半,得47;
用脚数之半47减去头数35,得12,这就是兔子的只数;
再拿头数35减去兔子的只数12,得23,即为鸡的只数。
看来,《孙子算经》的作者自己解此题时,用的就是现在的方程组算法:
设x为鸡数,y为兔数,则
“上置头”便是x+y=A,
“下置足”便是2x+4y=B;
“半其足”便是x+2y=B;
“以头除足”即为y=B-A,
“以足除头”即为x=A-y。
当代著名数学教育家波利亚教授,在他的权威著作《数学发现》里对此解法极为推崇,赞扬备至。
设想笼子里所有的鸡都提起一条腿,集体表演“金鸡独立”,所有的兔子都是两条后腿落地,跷起前腿。这时,每只鸡落地的脚数为1,就是头数;每只兔子落地的脚数是2,等于头数加1。
所以,总脚数的一半与总头数的差,是一定等于兔子只数的。请看,古人把“一一对应”原理运用得多么得心应手,多么神乎其神。
看来,数学不论深浅,要想取得重大进展,是少不了“顿悟”与巧思妙解的。