百鸡问题
“百鸡问题”及其衍生问题
“百鸡问题”及其衍生问题作者:***来源:《中学数学杂志(初中版)》2021年第03期1 百鸡问题简介所谓百鸡问题,是指下面这道中国古代数学题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一.凡百钱,买鸡百只.问鸡翁、母、雏各几何?用现在的语言表述就是:公雞5元1只,母鸡3元1只,小鸡1元3只.用100元钱买100只鸡.问公鸡、母鸡、小鸡各买多少只?百鸡问题是《张丘建算经》中的最后一题.张邱建,北魏清河(今河北邢台市清河县)人,是公元5世纪著名的大数学家.《张丘建算经》成书于公元466年到公元485年之间,现传本有92个问题.该书在最大公约数与最小公倍数的计算、不定方程的求解以及等差数列相关问题的求解等方面,具有独到的见解.百鸡问题是《张邱建算经》中的一个世界著名的不定方程问题.该书给出了这个问题的三组解:(1)公鸡4只,母鸡18只,小鸡78只;(2)公鸡8只,母鸡11只,小鸡81只;(3)公鸡12只,母鸡4只,小鸡84只.自张邱建以后,中国数学家对百鸡问题的研究从来没有间断过,百鸡问题几乎成了不定方程的代名词,从宋代到清代围绕百鸡问题的数学研究取得了许多成就.百鸡问题不仅在中国几乎尽人皆知,而且在国外也有较大影响.2 百鸡问题的解法关于百鸡问题的解法,《张丘建算经》中只提到:“鸡翁每增四,鸡母每减七,鸡雏每益(增加)三,即得.”但他并没有给出更具体的解法.现在我们通过解不定方程的方法来求出这个问题的解.3 与百鸡问题相关的一些问题在《张丘建算经》之后,出现了许多与百鸡问题相类似的问题,其中有些问题是后人自行编拟出来的,而有些问题却有明显的改变痕迹.现在我们挑选出其中的几例,与读者共同分享.1.“百人搬砖”问题(选自《趣味歌词古体算题选》,作者:潘有发,台湾九章出版社1995年出版).百人搬百砖,男子一搬八,妇女一搬三,小孩三搬一.请问各几人,各搬几块砖?不准列方程,不准用比例,只许用心算,看谁算得快!参照百鸡问题的解法,运用不定方程当然可以求解这个问题,但题目要求我们“用心算”.根据已知条件我们可以进行如下分析:一个男人比一个女人多搬5块砖;三个女人比三个小孩多搬8块砖.因为人数和砖数都必须是正整数,所以,应该先从小孩算起,小孩的人数应该是3的倍数.假设小孩有90人(也可以设小孩有60人,75人,87人等,只要是3的倍数即可,然后再逐一否定),搬砖30块,那么剩下70块要由10人来搬.若这10人都是女人,则只能搬30块,此时剩下的40块砖无人搬.因为每个男人比每个女人多搬5块,所以,只要把其中的8个女人对换成男人,则剩下的40块砖恰好分给8个男人搬.所以,该问题的答案是:男人8人,每人搬8块砖,共搬砖64块;女人2人,每人搬3块砖,共搬砖6块;小孩90人,每3人搬1块砖,共搬砖30块.2.“千钱百鸡”问题(选自程大位原著,梅毂成编《增删算法统宗》).今有千文买百鸡,五十雄价不差池,草鸡每个三十足,小者十文三个知.用现在的语言表述就是:现有1000元钱去买100只鸡,公鸡每只50元,母鸡每只30元,小鸡3只10元.问公鸡、母鸡、小鸡各买多少只.这道题与百鸡问题没有本质区别,只是钱的总数与每种鸡的价钱都增加到原来的10倍.仿照百鸡问题,通过解不定方程可得三组解:公鸡4只,母鸡18只,小鸡78只;公鸡8只,母鸡11只,小鸡81只;公鸡12只,母鸡4只,小鸡84只.3.“百马百瓦”问题.一百匹马驮一百块瓦,大马驮三块瓦,小马驮两块瓦,两个马驹驮一块瓦.问大马、小马、马驹各几匹?五十多年前,笔者读小学时,先父就曾经给我出过这道题,但具体出处不太清楚.设大马x匹、小马y匹、马驹z匹,根据已知条件有方程组: x+y+z=100,3x+2y+12z=100.解这个不定方程可得下面6组解:4.“和尚几人”问题(选自程大位《算法统宗》).一百馒头一百僧,大僧三个更无争.小僧三人分一个,大小和尚各几丁.“和尚几人”问题比百鸡问题少了一个条件,从而使得其解法也简单许多.通过求解一个一元二次方程,就可以很容易地求出答案来.程大位在《算法统宗》中曾经给出一个不用方程的漂亮解法.其解法如下:因为1个大和尚吃3个馒头,3个小和尚吃1个馒头,所以,1个大和尚和3个小和尚共吃4个馒头.把1个大和尚和3个小和尚看成一组,100个和尚共分为25组.由于每组有1个大和尚和3个小和尚,因此25组有25个大和尚,75个小和尚.5.“百钱买百牛”问题.据传,清代嘉庆皇帝曾仿照“百鸡问题”编了一道“百牛问题”给大臣们做:有银百两,买牛百头,大牛一头十两,小牛一头五两,牛犊一头半两.问大牛、小牛和牛犊各买多少头?答案:买大牛1头,小牛9头,牛犊90头.6.“几人吃饭”问题.在马克思的《数学手稿》中有一个与百鸡问题类似的问题,就是下面这个“几人吃饭”问题:有30个人,其中有男人、女人和小孩,在一家小饭馆吃饭花了50先令.每个男人花3先令,每个女人花2先令,每个小孩花1先令.问男人、女人和小孩各多少人?仿照百鸡问题,通过解不定方程可得下面9组解:观察上面的“百鸡问题”“千钱百鸡问题”“百马百瓦问题”和“几人吃饭问题”的答案不难发现,在每一个问题的所有答案中,x的值所构成的数列是一个等差数列;同样,y的值所构成的数列和z值所构成的数列也都是一个等差数列.与百鸡问题相关的问题,当然不止上面所罗列的这些.要想进一步了解更多的问题,读者可以查阅相关的资料;如果有兴趣,也可以自行编拟一些与之相关的问题.不论是自行求解,还是在课余时间与朋友交流、探讨,都是一件很有意义的事情.参考文献[1]徐品方,徐伟.古算诗题探源[M].北京:科学出版社,2008.9作者简介司志本(1959—),男,河北兴隆人,教授.曾被授予河北省优秀教师,获国家曾宪梓教育基金会教师奖;有170余篇数学论文发表.。
线性代数拓展案例1 百钱百鸡问题
线性代数拓展案例1 百钱百鸡问题 1.问题描述我国古代数学家张丘建在《算经》里面写到中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡母一,值钱五,鸡翁一,值钱三,鸡雏三,值钱一,百钱买百鸡,问母、翁、雏各几何?2.模型分析本题是一个典型的非齐次线性方程组的求解问题。
设母鸡、公鸡和小鸡分别为123,,x x x ,可得如下线性方程组:1231231001531003x x x x x x ++=⎧⎪⎨++=⎪⎩.这里123,,x x x 均为大于等于零的正整数。
3.模型求解我们将方程组的增广矩阵进行初等行变换,有111100104/3100531/3100017/3200r B --⎛⎫⎛⎫=−−→ ⎪ ⎪⎝⎭⎝⎭, ()131312323234410010033,,0772*******x x x x x x x x x x x ⎧⎧-=-=-⎪⎪⎪⎪∴⇔≥⎨⎨⎪⎪+==-+⎪⎪⎩⎩,其通解为1234/31007/3200,10x x k k R x -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪=-+∈ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭。
根据本题的实际情况,鸡为大于等于零的整数。
可得四组可行解:1111222233330481225,18,11,475788184x x x x x x x x x x x x ====⎧⎧⎧⎧⎪⎪⎪⎪====⎨⎨⎨⎨⎪⎪⎪⎪====⎩⎩⎩⎩。
4. MATLAB 求解代码%百钱百鸡问题问题format rat;A=[1 1 1;5 3 1/3];b=[100 100]';B=[1 1 1 100;5 3 1/3 100];B1=rref(B)%得到矩阵B 的行最简行矩阵x1=null(A,'r') %得到Ax=0的基础解系;即可求得B1 =1 0 -4/3 -1000 1 7/3 200x1 =4/3-7/31稍作分析即可得到模型的解。
百鸡问题(二)
百鸡问题(二)《张邱建算经》中记载着一个非常有名的数学问题,也就是百鸡问题。
这个问题翻译成现代白话文是这样的:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,现在想用一百文正好买一百只鸡,可以怎样买?这个题涉及到不定式方程。
在百鸡问题这一文中我们已经探讨过它的解法。
本文我们再用两种不同的方法来解决百鸡问题。
我们可以假设一百文正好买x 只公鸡,y 只母鸡,z 只小鸡。
则根据上述条件可以列出如下方程⎪⎩⎪⎨⎧=++=++100335100x z y x z y 百鸡问题这一文中我们把z 看作已知数来研究的。
本文中,我们分别吧x 、y 看作已知数来研究这一问题。
如果把x 当作已知数,那么由上述方程可知⎪⎩⎪⎨⎧+=-=x z x y 43754725 因为y 和z 都表示鸡的只数,所以它们都是大于0的整数。
所以x 是4的倍数,并且由y 是正整数可知04725>-x ,因此72147100=<x 。
小于15的非0自然数只有4、8、12是4的倍数。
所以x 只能取4,8,12这三个数。
当x=4时,1872544725y =-=⨯-=,7844375z =⨯+=。
当x=8时,11142584725y =-=⨯-=,8184375z =⨯+= 当x=12时,42125124725y =-=⨯-=,84124375z =⨯+=。
因此该问题有三组解,即公鸡4只,母鸡18只,小鸡78只;公鸡8只,母鸡11只,小鸡81只;公鸡12只,母鸡4只,小鸡84只。
如果把y 当做已知数可知,由上述方程可知⎪⎩⎪⎨⎧-+=-=-+=-=73585736007421474100y y z y y x 因为x 和z 都是大于零的自然数,所以2-4y 和5-3y 都是7的倍数。
也就是说4y 除以7余数是2,3y 除以7余数是5。
当y 除以7余数分别是1、2、3、4、5、6时所对应4y 除以7的余数分别是4,1、5、2、6、3。
百钱买百鸡解题思路数学
百钱买百鸡这个题目是一个著名的数学难题,它要求用一百个钱币购买一百只鸡,其中公鸡x只,母鸡y只,小鸡z只,且x+y+z=100,且5x+3y+z/3=100。
使用现代计算机技术的优势,可以通过暴力穷举来解决这个问题。
小朋友也可以在Scratch编程中,通过引入变量和穷举法来实现这一过程。
首先,设置三个变量x、y和z,它们分别代表公鸡、母鸡和小鸡的数量。
设置一个计数器,用于显示穷举的执行时间。
然后,开始穷举。
从x的最小值开始,即0,依次增加到最大值,即100/5,检查是否满足x+y+z=100。
如果满足,继续检查是否满足5x+3y+z/3=100。
如果都满足,则表示找到了一个解。
在穷举过程中,可以使用计时器显示穷举的执行时间,以便学生了解求解过程的耗时情况。
最后,输出找到的所有解,包括公鸡、母鸡和小鸡的数量。
这些解可能有四种情况:公鸡0只,母鸡25只,小鸡75只;公鸡4只,母鸡18只,小鸡78只;公鸡8只,母鸡11只,小鸡81只;公鸡12只,母鸡4只,小鸡84只。
通过这种方式,可以使用Scratch编程解决这个数学难题,并且通过计时器显示执行时间,了解求解过程的耗时情况。
例9-8 百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡
例 9-8 百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡一只 5 钱、母鸡一只 3 钱,小鸡一钱 3 只,问一百只鸡中公鸡、母鸡、小鸡各多少)。
4.1 z=1 4.2 是否满足百钱,百鸡
4.2.1 满足,输出最终百钱买到的百鸡的结果 4.2.2 不满足,不做处理 4.3 变量增加,这里注意步长为 3 流程图
版权所有:东北大学计算中心
开始 定义x,y,z
x<=20?
N
Y N
y<=33?
Y
N
z<=99?
Y
百钱和百鸡?
N
Y
输出百鸡 的结果
结束
图 5-8 程序执行流程图
版权所有:东北大学计算中心
这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为 x,y,z,问题化为三 元一次方程组:
5x 3y z / 3 100(百钱)
x
y
ห้องสมุดไป่ตู้
z
100(百鸡)
这里 x,y,z 为正整数,且 z 是 3 的倍数;由于鸡和钱的总数都是 100,可以确定 x,y,z 的取值范围:
1) x 的取值范围为 1~20 2) y 的取值范围为 1~33 3) z 的取值范围为 3~99,步长为 3 对于这个问题我们可以用穷举的方法,遍历 x,y,z 的所有可能组合,最后得到问题的解。 数据要求 问题中的常量: 无 问题的输入: 无 问题的输出: int x,y,z /*公鸡、母鸡、小鸡的只数*/ 初始算法 1.初始化为 1; 2.计算 x 循环,找到公鸡的只数; 3.计算 y 循环,找到母鸡的只数; 4.计算 z 循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤 1 实际上是分散在程序之中的,由于用的是 for 循环,很方便的初始条件放 到了表达式之中了。 步骤 2 和 3 是按照步长 1 去寻找公鸡和母鸡的个数。 步骤 4 的细化
百钱百鸡问题
百鸡问题
公元5世纪末,我国古代数学家张丘建在他所撰写的《算经》中,提出了这样的一个问题:“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一.百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”意思是公鸡5元一只,母鸡3元一只,小鸡1元三只。
用100元100只鸡,求公鸡、母鸡、小鸡各买几只。
假设a 为公鸡只数,b 为母鸡只数,c 为小鸡只数,如果把问题转化为n 元钱买n 只鸡,针对上述问题n =100,根据题意可得出下面的约束方程:
53/3%30
a b c n
a b c n c ++=++==
用穷举法实现如下所示:
图4.3 穷举法求解百鸡问题
这个算法有三重循环,枚举公鸡数量的外循环,枚举母鸡数量的中间循环以及枚举小鸡数量的内循环,主要执行时间取决于内循环的循环体的执行次数,需要执行(n+1)3次,当n=100时,内循环需要执行大于100万次。
考虑到n元钱只能买到n/5只公鸡或n/3只母鸡,因此有些组合可以不必考虑,而小鸡的数目又取决于公鸡和母鸡的只数,上述的内循环可以省去。
图4.3 改进算法求解百鸡问题
改进算法只有两层循环,枚举公鸡数量的外循环和枚举母鸡数量的内循环,内循环的执行次数为(n/5+1) (n/3+1)。
当n=100时,内循环执行21*34=714次,这和穷举算法的100万次相比,仅为原来的万分之七,有重大改进。
百鸡问题
百鸡问题我国北魏时期有一位小孩名叫张邱建,他从小聪明伶俐尤其擅长计算,在当地名气很大。
县令听说后就决定考一考他。
于是县令交给他一百文,要买张邱建家的一百只鸡,而且要求钱数必须正好。
当时鸡的价格如下:公鸡每只五文,母鸡每只三问,小鸡三只一文。
张邱建很快就算出结果。
县令有交给他一百文,让他再买来一百只鸡,不能与上次相同,张邱建很快就算好了,一连三次,张邱建拿来的鸡正好都是一百只,钱数也正好是一百文。
县令连连称奇,赞不绝口。
我们试着算一下这个问题。
假设公鸡x 只,母鸡y 只,小鸡z 只。
那么根据县令的要求我们可以列出如下两个方程: ⎪⎩⎪⎨⎧=++=++1003z 3y 5x 100z y x 该问题中有三个未知数,有两个方程,我们把它称为不定式方程。
在解的时候可以用其中一个未知数,表达另外两个未知数,再结合条件限制,就可以确定方程的解。
我们把z 看成常量。
则可知⎪⎩⎪⎨⎧-=-=z y z 3720010034x 因为x,y 分别代表的是公鸡母鸡只数,所以x,y 是大于0的自然数。
所以z 34,z 37是整数因此,z 必须是3的倍数。
又因为x,y 大于零。
因为x 大于0,所以100z 34-大于零,因此在z>754300=。
因为y 大于0,所以z 37200—大于零,因此z<75857600=。
因为76到85之间的3的倍数有78,81,84因此z 只能取78,81,84这三个数。
当z=78时,x=4100-7834=⨯;y=187837200=⨯—。
当z=81时 x=8100-8134=⨯;y=118137200=⨯—。
当z=84时 x=12100-8434=⨯;y=48437200=⨯— 所以满足条件的解有三组,即公鸡4只,母鸡18只,小鸡78只;公鸡8只,母鸡11只,小鸡81只;公鸡12只,母鸡4只,小鸡84只。
趣题巧解-《张邱建算经》“百鸡问题”
趣题巧解-《张邱建算经》百鸡问题
古代《张邱建算经》中的百鸡问题是一道很有名的算题。
题目内容是:用100元买100只鸡,大公鸡5元1只,母鸡3元1只,小鸡1元3只。
问各能买多少只?想:把三种鸡的只数分别设为未知数x、y、z,然后利用总只数、总钱数两个条件,列出两个方程,根据鸡的只数必须取整数的要求,一步一步推出各种鸡的只数。
解:设大公鸡x只,母鸡y只,小鸡z只。
根据题意,得把③式代入①式z+y+6x+3y=100得 x2=8y3=18把x、y的解代入③式得答:买大公鸡12只,母鸡4只,小鸡84只;或买大公鸡8只,母鸡11只,小鸡81只;或买大公鸡4只,母鸡18只,小鸡78只。
数学的有趣问题
数学的有趣问题(百鸡问题)中国古代算书《张丘建算经》中有一道著名的百鸡问题:公鸡每只值5 文钱,母鸡每只值3 文钱,而3 只小鸡值1 文钱。
现在用100 文钱买100 只鸡,问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?这个问题流传很广,解法很多,但从现代数学观点来看,实际上是一个求不定方程整数解的问题。
解法如下:设公鸡、母鸡、小鸡分别为x、y、z 只,由题意得:①……x+y+z =100②……5x+3y+(1/3)z =100有两个方程,三个未知量,称为不定方程组,有多种解。
令②×3-①得:7x+4y=100;所以y=(100-7x)/4=25-2x+x/4令x/4=t, (t为整数)所以x=4t把x=4t代入7x+4y=100得到:y=25-7t易得z=-75-3t所以:x=4ty=25-7tz=75+3t因为x,y,z大于等于0所以4t大于等于025-7t大于等于075+3t大于等于0解得t大于等于0小于等于25/7 又因为t为整数所以t=0,1,2,3(这里不要忘记t有等于0得可能)当t=0时x=0,y=25,z=75当t=1时x =4;y =18;z =78当t=2时x =8;y =11;z =81当t=3时x =12;y =4;z =84(过河问题)一个人带了一只羊、一只狼和一筐菜要过河,由于船很小,人每次只能带一样东西过河,但人一走,狼会吃羊,羊也会吃菜,问应如何安排,才能用最少的次数安全渡过河去?此题的关键是——狼不吃菜。
先把羊带过去,此时狼和菜在一起,安全。
空着手回来。
下面就很简单了。
把狼带过去,到对岸时把狼留那儿,把羊带回来,再把菜带过去,再空着手回来把羊带回去就可以了。
当然,第二次带菜也可以,一样的。
(验血问题)某次大战前夕,10万大军将在三天后出征。
军医发现军中有一位士兵带入了一种传染病菌。
三天后发作将快速传染全军,使10万大军丧失战斗力,只有验血才能判断谁是患者。
百钱买百鸡数学解法
百钱买百鸡数学解法《百钱买百鸡数学解法》是一道经典的数学问题。
问题的背景是:有100元钱,要买100只鸡,公鸡5元一只,母鸡3元一只,小鸡1元三只,问可以买到多少只公鸡、母鸡和小鸡?我们可以用代数方法来解决这个问题。
设公鸡数量为x,母鸡数量为y,小鸡数量为100-x-y,则有以下方程组:5x + 3y + (100-x-y)/3 = 100x + y + (100-x-y)/3 = 100/5将第二个式子化简,可得:2x + 2y = 100将其代入第一个式子中,化简后可得:7x + 4y = 100将7x除以4,可得x的取值:x=4,11,18,25,32,39,46,53,60,67,74,81,88,95。
由于公鸡数量必须是整数,因此在这些取值中,我们只能选择x=4,11,18,25,32,39,46,53,60,67,74,81,88,95这14种情况。
将x的取值代入2x+2y=100中,可得y的取值:当x=4时,y=23当x=11时,y=19当x=18时,y=15当x=25时,y=11当x=32时,y=7当x=39时,y=3当x=46时,y=-1当x=53时,y=-5当x=60时,y=-9当x=67时,y=-13当x=74时,y=-17当x=81时,y=-21当x=88时,y=-25当x=95时,y=-29由于母鸡数量也必须是整数,因此我们只能选择前6种情况,即x=4,11,18,25,32,39。
此时小鸡数量就可以通过100-x-y计算得到。
因此,当公鸡数量为4只,母鸡数量为23只,小鸡数量为73只时,满足题意。
当然,其他5种情况也是可以求出的。
小学奥数百鸡问题详解
小学奥数百鸡问题详解百鸡问题,现代数学用不定方程求解,在小学阶段,不少同学都是用拼凑的办法来解决。
这里介绍一种新方法,对小学生很适用《张丘建算经》中有这样一题:公鸡每只值5文钱,母鸡每只值3文钱,小鸡每3只值1文钱。
现在用100文钱买100只鸡,公鸡、母鸡、小鸡各有多少只?这是中国古代算术中的一类典型问题百鸡问题,现代数学用不定方程求解,在小学奥数题解题中,不少同学都是用拼凑的办法来解决。
这里介绍一种新方法,对小学生很适用。
1、求倍数。
每只公鸡值5文钱,每只母鸡值3文钱,每只小鸡值1/3文钱。
以最便宜的小鸡为标准,公鸡和母鸡的价格分别是小鸡的51/3=15倍和31/3=9倍。
2、算超额。
假设100文钱全部买小鸡,可买1001/3=300只,超出实有三种鸡总数300-100=200只。
3、组等式。
由于公鸡置换成小鸡可多出自身只数的15-1=14倍,母鸡置换成小鸡可多出自身只数的9-1=8倍。
不难理解,上述假设中多出的200只即为公鸡和母鸡置换成小鸡后一共增加的只数,关系式为:公鸡只数14+母鸡只数8=200.4、试结果。
一般来说,不定方程的正整数解按关系式就可以观察得到。
我们也可以先把等式变形,观察起来更为容易。
方法是,在等式两边同时除以一个相同的数(0除外),得到等式右边为整数,左边只有一项系数是分数的形式。
在上式两边同时除以8,得到:公鸡只数7/4+母鸡只数=25.显然,公鸡只数必须是4的倍数。
这样,从4 起,依次用4的倍数去试算,可以得出三种情况:公鸡4只,母鸡18只,小鸡78只;或公鸡8只,母鸡11只,小鸡81只;或公鸡12只,母鸡4只,小鸡84只。
下面再举一例来验证。
大数学家欧拉曾提出过这样的问题:一头猪321(31 2)银币,一只山羊131(11 3)银币,一只绵羊21(1/2)银币。
有人用100个银币,买了100头牲畜。
问:猪、山羊、绵羊各多少?猪的单价是绵羊的31 21/2=7倍,山羊的单价是绵羊的11 31/2=22 3倍,猪和山羊分别置换成绵羊,可多出自身只数的7-1=6倍和22 3-1=12 3倍。
百鸡问题
历史渊源
原书没有给出解法,只说如果少买7只母鸡,就可多买4只公鸡和3只小鸡。所以只要得出一组答案,就可以 推出其余两组答案。中国古算书的著名校勘者甄鸾和李淳风注释该书时都没给出解法,只有约6世纪的算学家谢察 微记述过一种不甚正确的解法。到了清代,研究百鸡术的人渐多,1815年骆腾风使用大衍求一术解决了百鸡问题。 1874年丁取忠创用一个简易的算术解法。在此前后时曰醇(约1870)推广了百鸡问作《百鸡术衍》,从此百鸡问 题和百鸡术才广为人知。百鸡问题还有多种表达形式,如百僧吃百馒,百钱买百禽等。宋代杨辉算书内有类似问 题,中古时近东各国也有相仿问题流传。例如印度算书和阿拉伯学者艾布·卡米勒的著作内都有百钱买百禽的问 题,且与《张邱建算经》的题目几乎全同。
百鸡问题
数学问题
01 问题
目录
02 历史渊源
百鸡问题是一个数学问题,出自中国古代约5—6世纪成书的《张丘建算经》,是原书卷下第38题,也是全书 的最后一题,该问题导致三元不定方程组,其重要之处在于开创“一问多答”的先例。
问题
今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?答曰: 鸡翁四,值钱二十;鸡母十八,值钱五十四;鸡鶵七十八,值钱二十六。又答:鸡翁八,值钱四十;鸡母十一, 值钱三十三,鸡鶵八十一,值钱二十七。又答:鸡翁十二,值钱六十;鸡母四、值钱十二;鸡鶵八十四,值钱二 十八。”
解法
数学解法
从现代数学观点பைடு நூலகம்看,实际上是一个求不定方程整数解的问题。
感谢观看
例9-8 百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡
4.2.1 满足,输出最终百钱买到的百鸡的结果 4.2.2 不满足,不做处理 4.3 变量增加,这里注意步长为 3 流程图
版权所有:东北大学计算中心
开始 定义x,y,z
x<=20?
N
Y ;=99?
Y
百钱和百鸡?
N
Y
输出百鸡 的结果
结束
图 5-8 程序执行流程图
分析
版权所有:东北大学计算中心
程序运行结果如下: cock=4,hen=8,chicken=78 cock=8,hen=11,chicken=81 cock=12,hen=4,chicken=84 对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后, 小鸡数就定了,即 z 100- x - y 。请同学们自己分析二重循环和三重循环的运行次数,做为 练习自己调试这一方法。
版权所有:东北大学计算中心
程序代码如下 #include "stdio.h" main() { int x,y,z; for(x=1;x<=20;x++) { for(y=1;y<=33;y++) { for(z=3;z<=99;z+=3) { if((5*x+3*y+z/3==100)&&(x+y+z==100))/* 是 否 满 足 百 钱 和 百 鸡 的 条 件 */ printf("cock=%d,hen=%d,chicken=%d\n",x,y,z); } } } }
5x 3y z / 3 100(百钱)
x
y
z
100(百鸡)
百钱买百鸡数学解法
百钱买百鸡数学解法
百钱买百鸡是一个古老的数学问题,其解法可以帮助我们锻炼数学思维和逻辑推理能力。
问题描述:有100元钱,要买100只鸡。
公鸡5元一只,母鸡3元一只,小鸡1元三只。
问应该如何购买,才能恰好花光100元钱并买到100只鸡?
解法:假设公鸡、母鸡、小鸡的数量分别为x、y、z,那么有以下几个条件:
1. x + y + z = 100(总数为100只鸡)
2. 5x + 3y + z/3 = 100(总价为100元钱)
将第二个条件化简得到:
15x + 9y + z = 300
根据第一个条件将z表示为z = 100 - x - y,代入上式得到: 15x + 9y + 100 - x - y = 300
化简得到:
14x + 8y = 200
将式子左右两边同时除以2得到:
7x + 4y = 100
由此可以得到一个结论:x和y必须满足7的倍数关系,因为4y 必须是4的倍数,而且100 - 7x也必须是4的倍数。
因此,我们可以在x和y的限制条件下,穷举出所有可能的解,并检查是否符合第二个条件。
最终得到的解为:
公鸡20只,母鸡40只,小鸡40只。
这个问题的解法虽然比较简单,但是通过这个问题可以锻炼我们的数学思维和逻辑推理能力,帮助我们更好地理解和应用数学知识。
同余理论—不定方程(小学数学课件)
公鸡 母鸡 小鸡 价钱 结果
1 6 93 54 × 1 9 90 62 × 1 12 87 70 × 1 15 84 78 × 1 18 81 86 × 1 21 78 94 × 1 24 75 102 × 1 27 72 110 × 1 30 69 118 × 1 33 66 126 × 2 2 96 48 × 2 5 93 56 × 2 8 90 64 × 2 11 87 72 × ……………
公鸡每只5钱,母鸡每只3钱,小鸡3只 鸡各多少?
我们用“枚举法”来解此问题。所谓枚举法就是将各种组合的可能性全部一一考虑到, 对每一组合检查它是否符合给定的条件,将符合条件的找出即可。
我们将买公鸡、母鸡和小鸡所有的情况一一列举,依题意得:公鸡最多买20只,母鸡 最多买33只,小鸡最多买100只,并将小鸡的只数不能被3整除的组合去掉,就把这样全 部可能的组合一一测试过,共只需测试228种情况,具体见下表:(因篇幅有限,此处列 举一部分)
“百钱买百鸡”问题
百钱买百鸡
我国古代数学家在《算经》中出了一道著名的“百钱买百鸡”问题: “鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡, 问鸡翁、母、雏各几何?” 意为:公鸡每只5钱,母鸡每只3钱,小鸡3只1钱。用100钱买100只鸡, 问公鸡、母鸡和小鸡各多少?
一、用枚举法求解百钱买百鸡问题
因此,方程(1)的所有整数解:
x = 4t y = 25 − 7t
(t=0,±1, ±2,……)
依题意得:0≤x≤20, 0≤ y ≤ 33,所以0≤t≤3,即t可以取整数值t1=0, t2=1, t3 =2, t4 =3. 相应地求得x,y,z的值是(x,y,z)= (0,25, 75),(4,18,78),(8,1,81),(12,4,84).
百钱百鸡问题的课程思政
百钱百鸡问题的课程思政百钱百鸡问题是一个经典的数学问题,也是一个生活中常见的实际问题。
它是一个启发思考的问题,通过解决这个问题,可以培养学生的逻辑思维能力和实际问题解决能力,同时也能从中引发对社会分配公平性的思考。
在课程思政中,我们可以通过讨论百钱百鸡问题,引导学生思考社会的公平性和资源分配的合理性等问题。
下面我们来详细探讨一下。
首先,百钱百鸡问题是一个关于资源分配的问题。
问题中要求用100枚铜钱购买100只鸡,母鸡5枚钱一只,公鸡3枚钱一只,小鸡1枚钱三只。
这个问题实际上暗含了资源的合理利用、优化分配的思维方式。
在具体解题过程中,学生需要通过巧妙的分析和计算,找到一种最优的资源分配方案,使得100元钱既购买了100只鸡,又最大程度上发挥了资源的利用效益。
从而,课后可延伸提问学生们可以探索百钱买100只兔子的问题,或放宽限制提高一些的情况下会有怎样的变化。
这样呢,就能够引导学生思考资源分配的公平性和效率性问题,激发他们在未来面临类似问题时的分析和解决能力。
另外,百钱百鸡问题也可以引发学生对社会公平性的思考。
在问题中,母鸡、公鸡和小鸡的价格不同,这涉及到物价和资源分配的问题。
对于学生来说,通过解决这个问题不仅可以锻炼他们的数学运算能力,还可以引导他们思考社会资源的分配是否存在公平性问题。
他们可以思考,为什么母鸡的价格比公鸡贵呢?为什么小鸡的价格比母鸡还低呢?这背后是否存在某种具体的原因或者规律?这样一来,不仅能加深学生对数学知识的理解,还可以拓展他们的思维广度,使他们在思考社会问题时更加全面和综合。
最后,百钱百鸡问题还可以启发学生对资源利用的节约性思考。
在问题中,我们要通过合理的购买方式,最大限度地利用有限的资金购买最多的鸡。
这就要求学生具备节约资源的意识和能力。
我们可以引导学生思考,如果不计成本,购买100只鸡的方式会发生怎样的变化?如果同时考虑成本和效益,应该如何制定购买计划?通过这样的探讨,可以培养学生的节约意识和资源管理能力,让他们在日常生活中更加注重资源的合理利用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
百鸡问题
今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。
凡百钱买鸡百只,问鸡翁、母、鶵各几何?答曰:鸡翁四,值钱二十;鸡母十八,值钱五十四;鸡鶵七十八,值钱二十六。
又答:鸡翁八,值钱四十;鸡母十一,值钱三十三,鸡鶵八十一,值钱二十七。
又答:鸡翁十二,值钱六十;鸡母四、值钱十二;鸡鶵八十四,值钱二十八。
”
原书说明
原书没有给出解法,只说如果少买7只母鸡,就可多买4只公鸡和3只小鸡。
所以只要得出一组答案,就可以推出其余两组答案。
中国古算书的著名校勘者甄鸾和李淳风注释该书时都没给出解法,只有约6世纪的算学家谢察微记述过一种不甚正确的解法。
到了清代,研究百鸡术的人渐多,1815年骆腾风使用大衍求一术解决了百鸡问题。
1874年丁取忠创用一个简易的算术解法。
在此前后时曰醇(约1870)推广了百鸡问作《百鸡术衍》,从此百鸡问题和百鸡术才广为人知。
百鸡问题还有多种表达形式,如百僧吃百馒,百钱买百禽等。
宋代杨辉算书内有类似问题,中古时近东各国也有相仿问题流传。
例如印度算书和阿拉伯学者艾布·卡米勒的著作内都有百钱买百禽的问题,且与《张邱建算经》的题目几乎全同。
解法中国古代算书《张丘建算经》中有一道著名的百鸡问题:公鸡每只值5 文钱,母鸡每只值3 文钱,而3 只小鸡值1 文钱。
现在用100 文钱买100 只鸡,问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?
这个问题流传很广,解法很多,但从现代数学观点来看,实际上是一个求不定方程整数解的问题。
解法如下:
设公鸡、母鸡、小鸡分别为x、y、z 只,由题意得:
①……x+y+z =100
②……5x+3y+(1/3)z =100
有两个方程,三个未知量,称为不定方程组,有多种解。
令②×3-①得:7x+4y=100;
所以y=(100-7x)/4=25-2x+x/4
令x/4=t, (t为整数)所以x=4t
把x=4t代入7x+4y=100得到:y=25-7t
易得z=75+3t
所以:x=4t
y=25-7t
z=75+3t
因为x,y,z大于等于0
所以4t大于等于0
25-7t大于等于0
75+3t大于等于0
解得t大于等于0小于等于25/7 又因为t为整数
所以t=0,1,2,3(这里不要忘记t有等于0得可能)
当t=0时
x=0,y=25,z=75
当t=1时
x =4;y =18;z =78
当t=2时
x =8;y =11;z =81
当t=3时
x =12;y =4;z =84
C语言解法
#include <stdio.h>
void main()
{int cocks=0,hens,chicks;
while(cocks<=20)
{: K s; q# s1 M4 N
hens=0;
while(hens<=33)
{( e2 n/ \) `9 t% e* F( R6 x
chicks=100-cocks-hens;
if(5.0*cocks+3.0*hens+chicks/3.0==100.0)1 T0 G4 {+ E C: H9 n/ a8 Y printf("公鸡%d只,母鸡%d只,小鸡%d只\n\n",cocks,hens,chicks); hens++;
}
cocks++;}}
输出结果为:
公鸡0只,母鸡25只,小鸡75只
公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只
java语言解法
public class BaiJiwenti4 c. M0 i' k! }/ M/ n z
{0 t4 j8 F0 Q& N: j: Z4 b; I
public static void main (String [] args)+ b6 T" S2 I/ E' C: c
{
for (int x = 0; x <= 19; x++)
{2 z) L8 q% X% @( S$ S
for (int y = 0; y <= 33; y++)7 h6 R5 ^" W# t9 L
{, b7 D4 q7 `) Z2 k I% n7 [
int z = 100 - x - y;
if((x * 5 + y * 3 + z / 3 == 100 ) && z % 3 == 0)
{# h1 Q. t( J/ S" y/ r, s
System.out.println("可买鸡翁只数:" + x);
System.out.println("可买鸡母只数:" + y);
System.out.println("可买鸡雏只数:" + z);/ r8 F+ ?& b4 ?& q4 |& r }/ c$ u/ W7 k8 {+ H7 d
}
}
}
}。