韩信是汉初名将,民间流传一句歇后语“韩信点兵——多多益善”,用来形容韩信的军事才能。有意思的是,“韩信点兵”也是一个流传很广的数学问题。据说韩信在点兵的时候,会先让士兵三人站成一排,记下最后多出的人数;再让士兵五人站成一排,又记下最后多出的人数;最后让士兵七人站成一排,同样记下最后多出的人数。这样他就能算出自己部队的总人数了。
在我国,“韩信点兵”问题最早出现在南北朝时期的数学著作《孙子算经》中,叫做“物不知数”问题:“一个整数除以三余二,除以五余三,除以七余二,求这个整数。”这个问题因此也被称为“孙子问题”。此类问题在现代数学中叫做“一次同余问题”,其解法称为“中国剩余定理”或“孙子定理”。
宋代数学家秦九韶在《数书九章》中对这个问题作出了完整系统的解答,称为“大衍求一术”。明代数学家程大位则在《算法统宗》中将它的解法编成易于上口的歌诀:“三人同行七十稀,五树梅花廿一支,七子团圆正半月,除百零五使得知。”它的意思是:将除以三得到的余数乘以七十,除以五得到的余数乘以二十一,除以七得到的余数乘以十五,全部加起来后减去一百零五(或者一百零五的倍数),得到的余数就是最后的答案。按照这个方法,《孙子算经》中“物不知数”问题的最小答案就是二十三。