百鸡问题

故事

张丘建,南北朝时期北魏人,是我国古代一位伟大的数学家。他的《张丘建算经》,是我国古代数学十大经典之一,内有等差级数、二次方程、不定方程等问题,对我国数学的发展起过重要作用。

张丘建小时喜欢读书,尤喜数学。日常生活中,遇到计算方面的难题,别人不会,他却能解决,当时就被人称为数学神童。他长大成名后,关于他小时候在计算方面的故事流传甚多。这里介绍的“百钱买百鸡”的`故事,便是其中的一个。

张丘建家中几代人都以养鸡为业。他的父亲张公尤善养鸡。他家的鸡,个大肉多,特别是当鸡瘟流行时,别人家的鸡常常死光,而他家的鸡却安然无恙。因此,前来买鸡的客人自然很多。客户来买鸡,鸡的品种、大小不同,价格也不相同,买得多时,计算就颇麻烦了。这时,往往是父亲还在费力地相加,小丘建已张口说出总价。街坊四邻和买鸡客人见了,大为惊讶。因此,附近有人遇上了难以计算的问题,便常来找他帮忙。

当地县令听说此事,不肯相信,遂决定考一考张丘建。他派人把丘建的父亲张公找来,问道:“你卖鸡多少钱一只?”张公回答:“公鸡五文钱一只,母鸡三文钱一只,小鸡一文钱三只。”县令说:“好,现在就按你说的价钱,给你一百文钱,买一百只鸡。回去给我挑一百只鸡,立即送来。”他想,来回路上需用两个时辰,这样复杂的问题,我看你儿子要多少时间才能算清。

张公回到家中,对儿子一说,张丘建略一思考,说:“一百文钱,可以买四只公鸡,十八只母鸡,再七十八只小鸡,正好不多不少一百只。给他送去吧!”张公连忙按儿子所说挑选了一百只鸡,赶回县衙。县令见刚好两个时辰多一点,再按送来的一百只鸡计算价格,正好一百文。接着,县令又拿出一百文钱,仍要一百只鸡,只是公鸡、母鸡和小鸡的数目不能和这次一样。张公回家,在约定的时间内,又送来八只公鸡、十一只母鸡和八十一只小鸡,共一百只鸡。县令一算,仍是分文不差。

这一下,县令来了兴致,再拿出一百文钱,买一百只鸡,公鸡、母鸡、小鸡数则要和头两次都不一样。他还嘱咐张公,送鸡时,务必把小丘建也带来。张公经过两次折腾,听县令说又要带上儿子,不知是祸是福。他想儿子毕竟才八岁,万一算错了……。他回到家中,脸上便带有愁容。张丘建听父亲说完情况,笑着说:“父亲放心,你抓十二只公鸡,四只母鸡,八十四只小鸡,我陪你一起送去就是了。”

把鸡送到县衙,县令再一计算,鸡数和钱数又是正好。县令大为高兴,把小丘建拉到自己身旁,抚摸着他的头说:“好一个神童!果然名不虚传。本县令也为你感到光彩。”他征得张公同意,便把小丘建留在了县衙里读书。

张丘建长大后,终于成为一位伟大的数学家。

数学解法

从现代数学观点来看,实际上是一个求不定方程整数解的问题。
解法如下:

设公鸡、母鸡、小鸡分别为x、y、z 只,由题意得:

① x+y+z =100

②5x+3y+(1/3)z =100

有两个方程,三个未知量,称为不定方程组,有多种解。

令②×3-①得:7x+4y=100;

所以y=25-7x/4

x y 均为正整数,分析上述等式

可得 x=0 或 4 或 8 或 12

由此可算出y,z

java语言解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) {
int k = 0;
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
k = 100 - i - j;
if (i + j + k == 100 && 5 * i + 3 * j + k / 3 == 100) {
if (k % 3 == 0) {
System.out.print("鸡翁:" + i);
System.out.print("鸡母:" + j);
System.out.print("鸡雏:" + k);
System.out.println();
}
}
}
}
}

运行结果:

Author: jimmy367
Link: http://www.ohtudou.com/2017/10/07/math-100c/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
支付宝打赏