
上QQ阅读APP看书,第一时间看更新
3.3 案例:百钱买百鸡问题
百钱买百鸡是我国古代数学家张丘建提出的一个数学问题,它的内容是鸡翁(公鸡)一值钱五,鸡母(母鸡)一值钱三,鸡雏三值钱一(一钱三只)。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
在本节中我们用Python编写程序对问题求解,并且深入探讨该问题的深层含义。具体的Python程序如程序3.11所示。
程序3.11 百钱买百鸡:

输出:

分析:
程序采用枚举法,即逐个考察所有可能的买法,最后留下符合题意的买法。具体来说,我们使用程序中的双重for循环来实现枚举法。首先固定x值(公鸡个数),再固定y值(母鸡个数),使用x和y的值依照题意得出z的值(雏鸡个数)并判断当前x、y、z值是否符合百钱买百鸡,符合输出,不符合则更换y值再次求z值并判断,直到当前x值下的所有y、z值全都不符合时,更换x值再次进入循环,直到所有x值都尝试过后,退出。因为买鸡都是整只的,因此在程序中只需考虑整数情况。程序流程图如图3.15所示。

图3.15 程序流程图
建立数学模型
关于百钱买百鸡的问题并不复杂,我们在解释的时候使用x代表要买的公鸡个数,使用y代表要买的母鸡个数,z代表要买的雏鸡个数,完成变量的设置之后根据本题的题意建立了数学模型,其中z值为100−x−y,有了这两个式子之后我们就可以对抽象的题目进行定量分析。在实际应用中,问题可能很复杂,其对应的数学模型也会十分复杂,对此我们可能会用到函数的相关知识来对其进行数学分析,这也是很常用的手段。