著名数学难题赏析-百钱百鸡
算法-经典趣题-百钱买百鸡
算法-经典趣题-百钱买百鸡本⽂为joshua317原创⽂章,转载请注明:转载⾃⼀、问题百钱买百鸡是⼀个⾮常经典的不定⽅程问题,最早源于我国古代的《算经》,这是古代著名数学家张丘建⾸次提出的。
百钱买百鸡问题的原⽂如下:鸡翁⼀,值钱五,鸡母⼀,值钱三,鸡雏三,值钱⼀,百钱买百鸡,问翁、母、雏各⼏何?这个问题的⼤致意思是公鸡5⽂钱1只,母鸡3⽂钱1只,⼩鸡3只1⽂钱,如果⽤100⽂钱买100只鸡,那么公鸡、母鸡和⼩鸡各应该买多少只呢?⼆、分析百钱买百鸡问题中,有三个变量:公鸡数量、母鸡数量和⼩鸡数量,分别设为x、y和z。
这三者应该满⾜如下关系:x+y+z=1005x+3y+z/3=100这⾥有三个变量,两个⽅程,因此是⼀个不定⽅程问题。
这将导致求解的结果不只⼀个。
可以根据上述两个⽅程来求出所有可能的结果。
三、编程package com.joshua317;public class Bqbj {public static void main(String[] args) {int n = 100;int m = 100;getBqbj(n,m);}/*** 百钱买百鸡* @param n 数量* @param m 钱数*/public static void getBqbj(int n, int m) {int x, y, z;for (x = 0; x <= n; x++) {for (y = 0; y <= n; y++) {z = n - x -y;if (z > 0 && z%3 == 0 && 5*x+3*y+z/3 == m) {System.out.println("x = " + x + ", y = " + y + ", z=" + z);}}}}}结果为:本⽂为joshua317原创⽂章,转载请注明:转载⾃。
[作文素材]张丘建百钱买百鸡名人故事
[作文素材]张丘建百钱买百鸡名人故事张丘建百钱买百鸡名人故事张丘建,南北朝时期北魏人,是我国古代一位伟大的数学家。
他的《张丘建算经》,是我国古代数学十大经典之一,内有等差级数、二次方程、不定方程等问题,对我国数学的发展起过重要作用。
张丘建小时喜欢读书,尤喜数学。
日常生活中,遇到计算方面的难题,别人不会,他却能解决,当时就被人称为数学神童。
他长大成名后,关于他小时候在计算方面的故事流传甚多。
这里介绍的“百钱买百鸡”的故事,便是其中的一个。
张丘建家中几代人都以养鸡为业。
他的父亲张公尤善养鸡。
他家的鸡,个大肉多,特别是当鸡瘟流行时,别人家的鸡常常死光,而他家的.鸡却安然无恙。
因此,前来买鸡的客人自然很多。
客户来买鸡,鸡的品种、大小不同,价格也不相同,买得多时,计算就颇麻烦了。
这时,往往是父亲还在费力地相加,小丘建已张口说出总价。
街坊四邻和买鸡客人见了,大为惊讶。
因此,附近有人遇上了难以计算的问题,便常来找他帮忙。
当地县令听说此事,不肯相信,遂决定考一考张丘建。
他派人把丘建的父亲张公找来,问道:“你卖鸡多少钱一只?”张公回答:“公鸡五文钱一只,母鸡三文钱一只,小鸡一文钱三只。
”县令说:“好,现在就按你说的价钱,给你一百文钱,买一百只鸡。
回去给我挑一百只鸡,立即送来。
”他想,来回路上需用两个时辰,这样复杂的问题,我看你儿子要多少时间才能算清。
张公回到家中,对儿子一说,张丘建略一思考,说:“一百文钱,可以买四只公鸡,十八只母鸡,再七十八只小鸡,正好不多不少一百只。
给他送去吧!”张公连忙按儿子所说挑选了一百只鸡,赶回县衙。
县令见刚好两个时辰多一点,再按送来的一百只鸡计算价格,正好一百文。
接着,县令又拿出一百文钱,仍要一百只鸡,只是公鸡、母鸡和小鸡的数目不能和这次一样。
张公回家,在约定的时间内,又送来八只公鸡、十一只母鸡和八十一只小鸡,共一百只鸡。
县令一算,仍是分文不差。
这一下,县令来了兴致,再拿出一百文钱,买一百只鸡,公鸡、母鸡、小鸡数则要和头两次都不一样。
多种解法求百钱百鸡问题
学号:0121210680225《算法设计与分析B》大作业题目多种解法求百钱百鸡问题学院计算机科学与技术学院专业软件工程班级Sy1201姓名李安福指导教师何九周2014 年12 月26 日多种解法求百钱百鸡问题摘要:中国古代数学家张丘建提出的“百钱买百鸡”可以采用蛮力法来解决。
本文给出了百钱百鸡问题的描述,采用蛮力法来解决这个问题,并通过分析对算法进行了优化,进一步提高了解决此问题的效率。
关键字:枚举,执行效率,蛮力法,不定方程,循环变量。
1引言蛮力法是一种简单直接地解决问题的方法,通常直接基于问题的描述和所涉及的概念定义。
这种方法经过很少的思考,把问题的所有情况或所有的过程交给计算机去一一尝试,从中找出问题的解。
由于计算机运算速度快,在解决问题时可采用这种“懒惰”的策略。
蛮力法的主要优点在于它是有广泛的适用性和简单性;它的缺点是大多数蛮力算法的效率都不高。
2问题概述 百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?3问题的分析题目分析与算法设计这是一个古典数学问题我们假设公鸡、母鸡和小鸡的个数分别为x,y,z,那么买公鸡的钱数为5x ,买母鸡的钱数为3y ,买小鸡的钱数为z/3;再由题意,x,y 和z 的和为100,问题化为可三元一次方程组,该问题的数学模型如下:⎩⎨⎧=++=++)(100)(1003/35百鸡百钱z y x z y x这里x,y,z 为正整数,且z 是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z 的取值范围:1) x 的取值范围为1~20 2) y 的取值范围为1~33 3) z 的取值范围为1~99对于这个问题我们可以用穷举的方法,遍历x,y,z 的所有可能组合,最后得到问题的解。
4算法设计 4.1算法设计14.1.1数据要求问题中的常量: 无无问题的输出:int x,y,z /*公鸡、母鸡、小鸡的只数*/4.1.2初始算法1.初始化为1(循环语句中初始值为1);2.计算x循环,找到公鸡的只数;3.计算y循环,找到母鸡的只数;4.计算z循环,找到小鸡的只数;5.结束,程序输出结果后退出。
百钱百鸡问题扩展
百钱百鸡问题及其扩展(陕西师范大学计算机科学学院10级计算机科学与技术)摘要:本文给出了一个百钱百鸡的问题,采用了贪婪法中的枚举法来解决这个问题,通过对比得出了较优的算法,并进一步的扩展了此问题,给出了最佳解决方案。
关键词:贪婪法;枚举法;扩展100 money and one hundred chicken problem and its extension( School of Computer Science ,Shaanxi Normal University ,level 10 computer science and Technology)Abstract: This paper presents 100 money and one hundred chicken problem, using the greedy method of enumeration method to solve this problem, by comparing the obtained optimal algorithm, and further extensions of this problem, and gives the best solution.Key words: greed method; enumeration; extension1、引言蛮力法是基于计算机运算速度快这一特性,在解决问题时采用一种“懒惰”的策略。
比较常用的有枚举法、穷举搜索算法等。
对于百钱百鸡问题,我们可能会想到列出两个三元一次方程,去解这个不定解方程,就能找出问题的解,所以我们想到用枚举法来进行算法设计。
2、问题概述百钱百鸡问题。
中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?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编程解决这个数学难题,并且通过计时器显示执行时间,了解求解过程的耗时情况。
“百钱买百鸡”问题的C语言算法分析
“百钱买百鸡”问题的C语言算法分析Abstract:As a process-oriented programming language,C programming language is one of the most classic and popular computer programming languages with the characteristics of the assembly language and the high-level language.It is not only the first choice for the people who begin to learn computer programming,but also the basis for other computer courses and software development.As a difficult point in C Programming Language learning,the loop statement can be used to solve many practical problems of regularly repetitive operation.Taking the case of "spending 100 dollars on 100 chickens",the paper implements design,analysis and optimization,and finally proposes the optimal algorithm.Keywords:C programming language;loop statement;spending 100 dollars on 100 chickens1 引言(Introduction)计算机算法设计是计算机专业学习的核心专业内容,算法设计对于培养一个人的逻辑思维能力具有重要的作用,能进行有效的算法设计是对一个计算机学者的基本要求。
百钱百鸡问题
百鸡问题
公元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万次相比,仅为原来的万分之七,有重大改进。
百钱买百鸡实验报告
一、题目描述我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?二、解题思路对n=100的情况,因为有三个变量,则有三重循环和二重循环两种算法1、算法一:三重循环(1)变量变化范围的确定:由于公鸡5钱一只,则100钱最多可购买100/5=20只公鸡,此即为第一个变量的变化上限;由于母鸡3钱一只,则100钱最多可购买100/3≈33只母鸡,此即为第二个变量的变化上限;由于小鸡三只一钱,而所有鸡的总数不得超过100只,则100即为第三个变量的变化上限;(2)条件的控制:由百钱买百鸡可知,鸡的数量为100只,买鸡所用的钱数为100钱,即控制条件为a+b+c=100且a*5+b*3+c/3=100;2、二重循环:(1)变量变化范围的确定:由于整题共有3个变量,所以当前两个变量确定后,第三个变量自然被确定下来,故可采用二重循环解题。
前两个变量的确定同三重循环,第三个变量则用c=n-a-b来确定;(2)条件的控制:由百钱买百鸡可知,鸡的数量为100只,买鸡所用的钱数为100钱,即控制条件为a+b+c=100且a*5+b*3+c/3=100;由于需要讨论算法的时间性能,在程序中加入时间函数计算程序运行所需的时间进行比较。
用控制变量的方法,对两种算法中的n进行同样的变化处理,来讨论两种算法的时间性能,e.g.分别令n=100,n=200,n=500,n=1000,n=2000,n=5000三、自我评估、反思由于较长时间未使用C语言编程,所以在使用语法上略显生疏了些,通过这次作业的实践过程,对C语言的编程语法规则熟悉了许多,虽然在运行过程中出现了一些错误,但也都能够较快地解决,第一次的数据结构实验作业总体完成的还算比较顺利。
利用“百钱买百鸡”探讨穷举法
利用“百钱买百鸡”探讨穷举法山东省鱼台县第一中学范海涛2009年7月23日16:35 浏览:97 专家浏览:0 | 评论:10 专家评论:0利用“百钱买百鸡”探讨穷举法【课标要求】(1)了解穷举法的基本概念及用穷举法设计算法的基本过程。
(2)能够根据具体问题的要求,使用穷举法设计算法,编写程序求解问题。
【教材处理】由于这是学生首次接触用非解析法解题,如果要求学生很快掌握其基本过程并且能对算法进行优化,将是不现实的。
尤其是考虑到学生的信息技术基础参差不齐,可能差距较大,基础差的学生在可能不能接受太多的内容;而且,就算能“吸收”到全部内容,未必就能全部“消化”。
本节课选取来自《张邱建算经》的百钱买百鸡问题作为本次教学的主题。
这样既能提高学生学习的兴趣,又能使学生容易掌握知识,还可以培养学生的民族自豪感和通过建立数学模型和设计程序解决实际问题的习惯。
【学生情况分析】1、学生在本节课前学习高中信息技术新课程的《算法与程序设计》模块已经有一段时间了,学生对算法和程序设计有了一定的认识,但是在面对实际问题时如何设计算法并且用程序实现算法来解决问题上,尤其是对于无法用解析法解决或者是用解析法解决比较困难的问题如何设计算法还是没有什么思路;2、“百钱买百鸡”问题的数学模型是解不定方程,学生在初中的数学课上学过。
本次课在原有知识的基础上,通过对实际问题的分析找到合适的数学模型,使学生基本理解和掌握穷举法解题的思路;【教学目标】1、知识与技能(1)了解非解析法解题的基本思路;(2)理解和掌握穷举法解题的思路,2、过程与方法经历分析问题、建立数学模型、编写和调试程序,得到最终结果的过程,理解和掌握用穷举法解题的基本思路与过程;3、情感态度与价值观(1)通过主题任务的完成,激发民族自豪感和自身的成就感;(2)通过小组讨论与探究活动,提高团队合作能力,促进探究的热情;(3)通过结合学习生活的实际例子,进一步提高利用信息技术解决学习、生活问题的能力。
关于算法中循环语句应用举例——百钱买百鸡问题
一关于算法部分scilab3.0中条件语句的嵌套问题程序举例例1新课标B版数学教材必修3第14页B组第4题程序如下:x=input("x=")if x>60disp("over weight")elseif x>40y=240elseif x>20y=160elsey=80endendend例2教材27页B组第4题x=input("x=");if x<-1y=1elseif x>1y=1elsey=0endend例3教材31页习题1-2 B组第2题:x=input("x=");if x>5000disp("over money")elseif x>3000y=2000*0.1+(x-3000)*0.25elseif x>1000y=0.1*(x-1000)elsey=0endendend二关于算法中循环语句应用举例——百钱买百鸡问题例1 新课标B版数学必修3教材41页第7题:用100元钱买100只鸡,公鸡每只5元,母鸡每只3元,小鸡3只一元,问能买多少公鸡,母鸡和小鸡?程序如下:for x=1:20for y=1:33z=100-x-y;if 5*x+3*y+z/3<>100elsexyzendendend例2求100以内的所有勾股数。
for i=1:100for j=1:100for k=2:100if i*i+j*j<>k*kelseijkendendendend例3关于用scilab3.0中的随机数研究等可能性问题:在scilab3.0的编辑界面中输入该程序,运行后在界面上输入a,b(a可以输入100,1000,1000等,b取0——9中的数字)即可体现出在一位数的随机数当中0——9每个数字出现的概率接近0.1。
a 越大k与0.1的差距越小。
张邱建与百鸡问题
因 , 正 数 所 寺也 正 数 为, 整 , 以 是 整 . 是
设÷=,l 4 (是正整数) £ l=t £  ̄x . J
x 4t = ,
‘
.
【 2 7t 5 .
一
( 是正整 数 ) £
又‘y O f 2 - tO . > . l5 7> , ‘ i 1
・
.
t34 <
.,ຫໍສະໝຸດ 即£123 : , 。.
列方程
5+ , 1 -—)1 . 3 ÷(O x =0 , + 0 Y 0
化简 , 7 + y O . 得 x 4 =l0
由于 有两 个未知 数 , 程有 无穷 多组解 , 、表 示鸡 的 只数 , 方 但xy 因此 , xy 是正整数 . 们将方程继 续 变形 为 ,都 我
, 2 —外 , 5 2 =
他“ 张神童 ”.
有一次,宰相家要买10 0 只鸡 ,且只给了卖鸡的张老伯 1 文钱. 0 0 张老
伯 顿时 犯愁 了 , 因为 当时 的鸡 价是 公 鸡每 其5 文钱 , 鸡 每 只3 钱 , 母 文 小鸡 每3 1 只 文钱 , 不知 如何 选鸡 , 去请 教 张邱建 . 他 便 张邱建 稍作 思 考 , 张老 让
小鸡 送给宰相 .
这使得宰相赞叹不已. 他又给了张老伯 10 0 文钱 ,让他仍按要求送鸡. 张老伯回去与张邱建再次商量, 张邱建告诉老伯按 l只公鸡 、 D母鸡、4 2 4. 8
只小 鸡配数 . 把鸡 数与鸡价 ~算 , 宰相 也正好 百鸡百 钱.
回
圊—圈 ・膏 誓
维普资讯
题.
上面介绍的解法是求二元一次方程正整数解的常用方法 ,请你参照
上述 解法完成下 面 的练 习.
c语言百钱买百鸡问题
百钱买百鸡问题一一一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少〕 .这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x, y, z,问题化为三元一次方程组:5x 3y - z/3 =100〔百钱〕'x +y +z =100〔百鸡〕这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:1)x的取值范围为1〜202)y的取值范围为1〜333)z的取值范围为3〜99,步长为3对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解. 数据要求问题中的常量:无问题的输入:无问题的输出:int x , v, z /*公鸡、母鸡、小鸡的只数*/初始算法1.初始化为1;2.计算x循环,找到公鸡的只数;3.计算y循环,找到母鸡的只数;4.计算z循环,找到小鸡的只数;5.结束,程序输出结果后退出.算法细化算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了.步骤2和3是根据步长1去寻找公鸡和母鸡的个数.步骤4的细化4 . 1 z = 14 . 2是否满足百钱,百鸡4. 2. 1满足,输出最终百钱买到的百鸡的结果4. 2. 2不满足,不做处理4 . 3变量增加,这里注意步长为3流程图开始:结束图5-8程序执行流程图程序代码如下#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);}}分析程序运行结果如下:cock=4,hen=8,chicken=78cock=8,hen=11,chicken=81cock=12,hen=4,chicken=84对于这个问题实际上可以不用三重循环,而是用二重循环,由于公鸡和母鸡数确定后, 小鸡数就定了,即z=100-x-y.请同学们自己分析二重循环和三重循环的运行次数,做为练习自己调试这一方法.。
一个古代数学问题的思考
一个古代数学问题的思考——百鸡术的历史研究近年来对中国数学史研究的不断深入,中算家的不定分析研究出现了若干争鸣问题.百鸡术为其中之一。
重新审视百鸡术及中算家的不定分析,不仅有助干清晰地理解一个数学问题和方法的历史发展过程,更有益于进一步思考中国古代算学独特的理论根源。
1零散算题——张丘建和甄鸾的百鸡题百鸡问题最早出现在《张丘建算经》(5世纪)卷下最后一题:有鸡翁一直钱五,鸡母一直钱三,鸡雏三直钱一。
凡百钱买鸡百只。
问鸡翁、母、雏各几何?书中给出了此题的三组答案.也是其所有自然数解。
即:鸡翁四只、鸡母十八只、鸡雏七十八只,鸡翁八只、鸡母十一只,鸡雏八十一只,鸡翁十二只.鸡母四只、鸡雏八十四只。
至于解法,术文十分简略:鸡翁每增四,鸡母每减七,鸡雏每益三。
即得。
这道题的题目和答案都是完整的,而解法是被省略的,张丘建认为它是不需要详细说明的。
这暗示了这样一个事实,即张丘建认为这道题的详细解法是储备于读者的知识背景之中的一一即是显然的.也必然是初级的.并且是不完整的。
正由于此。
导致后世的对于百鸡类问题产生了极大的困惑。
甄鸾,在《数术记遗》“计数”条目下,记载了另外两问的百鸡问题:或问曰:今有翁一只直五文,鸡母一只直四文,鸡儿一文得四只。
今有钱一百文,买鸡大小一百只。
问各几何?”答曰:“鸡翁十五只,鸡母一只。
鸡儿八十四只,合大小一百只。
”计数多少略举其例。
或问曰:今有鸡翁一只直四文,鸡母一只直三文,鸡儿三只直一文。
今有钱一百文,还买鸡大小一百只。
问各几何?”答曰:鸡翁八只,鸡母十四只,鸡儿七十八只,合一百只。
”关于计数”.甄鸾解释就是“即舍数术.宜从心计。
”可见甄鸾不认为此类问题有什么通法可言。
甄鸾的两道百鸡问题,第一道给出了它的唯一一组自然数解,第二道给出了该道题全部两组自然数解中的一组。
大概因为甄鸾并不关心此类问题是否是一个多解问题。
《数术记遗》的两道百鸡题既没有解法,答案也不完整。
正是从甄鸾开始,中算家不识张丘建百鸡原术。
百鸡问题
晚 上张神童见父亲愁眉苦 脸 ,等 他了解了事情 的经过后 ,就劝父亲不要发愁.
“百鸡问题 ”是我 国乃至全 世界 古代数学 史中 的一 个奇 葩 ,这 比欧 洲发 现和 研 究这 个 问题要 早 lO00多 年 .
自张邱建以后 ,中国数学家对“百鸡问题”的研 究 不断 深入 ,“百鸡 问题 ”也 几乎成 了不定 方程 的代 名词 ,从宋 代到清代围绕“百鸡问题”的数学研 究取 得 了很大成就 ,这一影响一 直持续到 l9世纪.“百鸡 问题”还 曾传人印度 ,出现在摩珂呲 罗(9世 纪)和帕 斯卡尔拉(12世 纪)的著作中.
第二天 清 早 ,张邱 建就要 父 亲带 去 4只公鸡 、 l8只母鸡 、78只小鸡 ,宰 相一看 ,正巧 100钱买 100 只鸡.宰 相 又给 张 老 伯 100钱 ,叫 他 再送 100只鸡 来 ,结果张神 童叫父亲将 8只公鸡 、11只母鸡 、81只 小鸡送给宰相 .
这 时宰相赞 叹不 已.他还 是给了 张老伯 100钱 继 续送 鸡.这 下 张老伯 可发愁 了 ,回去 与儿子 再次 商 量 ,未料 张神童 立即 告诉父 亲按 l2只公 鸡 、4只 母 鸡 、84只小鸡 配数 ,马 上送给 宰相 ,宰相把 鸡数 与鸡价 一算 ,正好百鸡百钱.
《张邱建 算经 》现 传 本有 92问 ,比较突 出 的成 就 有最 大公约数 与最 小公倍 数的计算 、各种等 差数 列问题 的解 决 、某 些不定方程 问题求解等.《张 邱建 算经 》中的“百鸡 问题 ”是世 界上首次提 出的三 元一 次 不定方程及其一 种解法 ,它给 出了由三 个未 知量 的两 个 方程 组成 的不定 方 程组 的 解.“百鸡 问题 ” 是 :今 有鸡 翁一 ,值钱五 ;鸡 母一 ,值钱 三 ;鸡 雏三 , 值钱一 ,凡百钱买 鸡百只 ,问鸡 翁 、母 、雏各几何 .这 个 问题 是中 古时期关于 不定方 程整数 解的典 型问 题 .张邱建对此有精湛和独到 的见解.
百鸡问题
百鸡问题作者:姜末来源:《初中生世界·七年级》2018年第05期在1500多年前,有一个卖鸡的张老伯,他的儿子张邱建从小勤奋学习,到十二三岁时就读了不少书,尤其是古代的《九章算术》《孔子算经》等数学书,他特别爱读.他从中学到了不少数学知识,邻居遇到疑难问题或者买卖发生纠纷时,都要找他解决,因此大家都称他“张神童”.这件事传到当朝宰相耳中,他为了试探一下张神童到底有多神,就把张老伯召来,请他明天带100只鸡到相府,不准多,也不准少.当时的鸡价是公鸡每只5钱,母鸡每只3钱,小鸡每3只1钱,宰相就给张老伯 100钱.晚上张神童见父亲愁眉苦脸,等他了解了事情的经过后,就劝父亲不要发愁.第二天清早,张邱建就要父亲带去4只公鸡、18只母鸡、78只小鸡,宰相一看,正巧100钱买100只鸡.宰相又给张老伯100钱,叫他再送100只鸡来,结果张神童叫父亲将8只公鸡、11只母鸡、81只小鸡送给宰相.这时宰相赞叹不已,他还是给了张老伯100钱继续送鸡.这下张老伯可发愁了,回去与儿子再次商量,未料张神童立即告诉父亲按12只公鸡、4只母鸡、 84只小鸡配数,马上送给宰相,宰相把鸡数与鸡价一算,正好百鸡百钱.这事使宰相佩服得不得了,把张神童请去,加以培养,几年以后,张神童研究的数学问题,取得了不少成果,并且写了很多文章.而“百鸡问题”就是他所写的《张邱建算经》中的一个不定方程问题.张邱建一生解决了不少数学难题,写下了许多数学著作,为传播数学文化作出了很大貢献,著有《张邱建算经》3卷.后世学者北周甄鸾、唐李淳风相继为该书作了注释,刘孝孙为算经撰了细草.算经的体例为问答式,条理精密,文词古雅,是中国古代数学史上的杰作,也是世界数学资料库中的一份遗产.《张邱建算经》现传本有92问,比较突出的成就有最大公约数与最小公倍数的计算、各种等差数列问题的解决、某些不定方程问题求解等.《张邱建算经》中的“百鸡问题”是世界上首次提出的三元一次不定方程及其一种解法,它给出了由三个未知量的两个方程组成的不定方程组的解.“百鸡问题”是:今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一,凡百钱买鸡百只,问鸡翁、母、雏各几何.这个问题是中古时期关于不定方程整数解的典型问题,张邱建对此有精湛和独到的见解.“百鸡问题”是我国乃至全世界古代数学史中的一个奇葩,这比欧洲发现和研究这个问题要早1000多年.自张邱建以后,中国数学家对“百鸡问题”的研究不断深入,“百鸡问题”也几乎成了不定方程的代名词,从宋代到清代围绕“百鸡问题”的数学研究取得了很大成就,这一影响一直持续到19世纪.“百鸡问题”还曾传入印度,出现在摩珂呲罗(9世纪)和帕斯卡尔拉(12世纪)的著作中.(摘编自《初中数学读本》)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学教研组
(共两课时120分钟)
我国古代数学书《张邱建算经》中有如下问题,也就是著名的百鸡百钱问题。
大意是:公鸡1只值钱5,母鸡1只值钱3,小鸡3只值钱1。
今有钱100,买鸡100只。
问公鸡、母鸡、小鸡各买几只?
关于这个“百鸡百钱问题”还流传着下面一个故事哩!
在我国南北朝的时候,京城里有个卖鸡的张老老,所生一子,天资聪颖,勤学不怠。
到十二三岁,已经博览群书,尤其富有算术的天才。
邻居每遇疑难问题,或是钱银上发生纠纷,都由他一言解决。
因此大家都叫他张神童,逐渐传扬开去,不久就远近闻名了。
当朝的老丞相爱才若渴,一天,听人谈到张神童的算法,心中很是不信,当下想了一个方法要去试探他,于是唤他的仆人去打听张老老卖的鸡是什么价钱。
不多时仆人回答说:“公鸡每只卖钱五文,母鸡每只卖钱三文,小鸡每三只卖钱一文。
”老丞相就拿出一百文钱,命仆人去给张老老,叫他尽这一百文钱把三种鸡配成一百只,不多不少,明天送来。
张老老暗想:这实在是一个难题,然而又不敢违命,当时只好一口答应。
等到收市后,就开始把三种鸡配起来。
但是左配右配,总是配不成。
正在无计可施的时候,他的儿子来了,问起情由,才知道是这样的一件事。
于是安慰着父亲,叫他不要着急,明天总有办法。
张神童当晚经过仔细研究,果然找到了答案。
第二天选出了“公鸡4只,母鸡18只,小鸡78只”叫他父亲送到相府。
老丞相拿来一算:4只公鸡值钱二十文,18只母鸡值钱五十四文,78只小鸡值钱二十六文,共计100只鸡,恰巧值钱一百文。
心里一高兴,立刻又拿一百文钱给张老老,叫他明天再送一百只鸡来,不过三种鸡的只数要换一种方法搭配。
张老老口头答应着,心里很是担忧,垂头丧气地回到家,忙和儿子商量。
儿子说:“你明天拿8只公鸡,11只母鸡,81只小鸡送去就是了。
”第二天张老老依言送去,老丞相一算,又是一点不错。
心里一高兴,又给张老老一百文钱,要再另配一百只鸡。
张老老暗想:这回恐怕是无法应付了。
不料他的儿子又检出“公鸡12只,母鸡4只,小鸡84只”叫父亲送
去。
老丞相一算,又丝毫不错,很是佩服,连忙问张老老是谁人配成的。
张老老只得照实说了。
老丞相立即召张神童来,授他官职。
后来张神童年纪渐大,曾发明通分简法,级数算法等,著了一部书名叫《张邱建算经》。
上面说的“百鸡百钱问题”也载在这部书中。
故事讲完了。
现在我们来研究一下这类题的解答方法:
(Ⅰ)算术方法
用纯粹的算术眼光来观察这百鸡题,却是一个普通的混合比例题。
因为100只鸡值钱一百文,平均每只就值钱一文。
所以就它们损益(即亏盈)的数可以求得混合量的比,再用配分法来分配得下表:
上表应这样理解,若每只公鸡、母鸡都作一文卖,亏损4+2=6(文),
1:1:9.于是依照这连比来把100只鸡分成3份。
但是鸡的只数必须是整数,而1+1+9=11,不是100的约数,所以这个连比不适用。
另行推求,得3:1:21就对了。
因为3+1+21=25,而25是100的约数,所以
若把混合量的比逐次推求下去,一定还可以得两个适用的连比:2:9:39,8:11:81.按照这些连比计算,就可得上面故事中张神童所作的另两个答案:公鸡4只,母鸡18只,小鸡78只:或公鸡8只,母鸡11只,小鸡81只。
上法推得符合要求的三个不同的混合量的比,就可求得三个不同的答案。
但是事实上要求得三个适用的连比,并非容易。
下面介绍方便一些的增减率加减法。
为此,我们先来研究张神童的三种答案的变化情况,发现公鸡的只数逐次多4;母鸡的只数逐次少7;小鸡的只数逐次多3.每次加多的鸡同减少的鸡都是7只,所以鸡的总数三次一样是100只。
这是应该注
×3=21文。
减少的7只母鸡恰巧也是值钱3文×7=21文,所以鸡的总价值三次都是一百文。
这是应该注意的又一点。
照此看来,这百鸡问题的答案,我们求到第一种之后,只要公鸡数加4,母鸡数减7,小鸡数加3,就可以求到其余的答案。
或先求到第三种答案,然后公鸡数减4,母鸡数加7,小鸡数减3,也可求得其他的答案。
这4,7,3我们可以称它做“增减率”。
再来研究一个问题,百鸡问题是否还有第四种答案呢?这很容易解决,用增减率加减就行了。
现在把第三种答案增减如下:
公鸡12+4=16只,母鸡4-7=-3只,小鸡84+3=87只,因鸡数不能是负数,所以这答案不适用。
若继续进行,母鸡的只数终不能成正数。
再把第一种答案增减:
公鸡4-4=0只,母鸡18+7=25只,小鸡78-3=75只,因为不能没有公鸡,所以这答案也不适用。
若继续进行,公鸡的只数又成负数了。
由此知道这个问题的答案再也没有第四种了。
(Ⅱ)代数解法
用代数眼光来观察百鸡问题,却是一个普通的不定方程问题。
因为未知数有三个,方程却只能列两个,所以答数也就不止一组了。
解:设公鸡x只,母鸡y只,小鸡z只,则公鸡共值钱5x文,母鸡
(2)×3-(1)得 14x+8y=200.
∴7x+4y=100.(3)
观察(3)式,4y同100都是4的倍数,所以x一定也是4的倍数,从小到大地用4的倍数来代x,同时求出y和z的值,列成下表:
表中只有前三组值是正整数,也正是本题的三种答案。
练习题
现用代数解法解下面类似的百钱买百货的古算题:
柑三梨四,一钱枣子买14。
百钱买百货,问柑、梨、枣各买几何?
题意是:柑子每个3文,梨子每个4文,枣子1文买14个。
100文钱可买柑、梨、枣各几个?
解:设买柑用钱x文,买梨用钱y文,买枣用钱z文。
根据题意可得如下方程组:
(4)-(3)得x+165z=900,
∴x=900-165z.
由于x,z都是0至100之间的整数,
所以只能有z=5.因此
x=900-165×5=75.
y=100-75-5=20.
答:买柑25个,买梨5个,买枣子70个。