中国古代数学中的算法案例(1)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1813=333×5+148 333=148×2+37
148=37×4+0
S1:用大数除以小数
显然37是148和37的最大公约数, S2:除数变成被除数,余数变成除数 也就是8251和6105的最大公约 S3:重复S1,直到余数为0 数
思考: 你能把辗转相除法编成一个算法吗?
(1)、算法步骤: 第一步:输入两个正整数m,n(m>n). 第二步:计算m除以n所得的余数r.
(二)辗转相除法(欧几里得算法)
1、定义: 所谓辗转相除法,就是对于给定的两 个数,用较大的数除以较小的数。若余数 不为零,则将余数和较小的数构成新的一 对数,继续上面的除法,直到大数被小数 除尽,则这时较小的数就是原来两个数的 最大公约数。
2、步骤: (以求8251和6105的最大公约数的过程为例) 第一步 用两数中较大的数除以较小的数,求得商 和余数 8251=6105×1+2146 说明: 8251和6105的公约数就是6105和2146的 公约数,求8251和6105的最大公约数,只要求出 6105和2146的公约数就可以了。
5 25 35 ( 1) 5 7 7 ( 2) 49 63 7 9
所以,25和35的最大公 约数为5
所以,49和63的最大公 约数为7
思考:如何算出8251和6105的最大公约数?
除了用这种方法外还有没有其它方法?
(一)更相减损之术
1、背景介绍: 《九章算术》中的更相减损之术:
可半者半之,不可半者,副置 分母、子之数,以少减多,更相减 损,求其等也,以等数约之。
二、割圆术
刘徽是怎样割圆的
割之弥细 失之弥少 割之又割 以至于不可割 则与圆合体 而无所失矣
高明的逼近方法
弱近似
内接多边形 S 2n
强近似 破缺的外切多边形
S2n + (S2n - Sn )
计算量节省一半
用内接正 3072 边形逼近圆周 求得
= 3.1416
史称 徽率
xn hn 1 2
第三步:m=n,n=r.
第四步:若r=0,则m,n的最大公约数等于n; 否则转到第二步. 第五步:输出最大公约数m.
(2)、程序框图:
开始 输入m,n r=m MOD n m=n n=r r=0? 是 输出m 否
结束
小结
比较辗转相除法与更相减损术的区别 (1)都是求最大公约数的方法,计算上辗 转相除法以除法为主,更相减损术以减法为 主,计算次数上辗转相除法计算次数相对较 少,特别当两个数字大小区别较大时计算次 数的区别较明显。 (2)从结果体现形式来看,辗转相除法体 现结果是以相除余数为0则得到,而更相减损 术则以减数与差相等而得到。
练习: 1、用更相减损术求两个正数84与72的最大公约数.
2、求324、243、135这三个数的最大公约数。 思路分析:求三个数的最大公约数可以先求出两个 数的最大公约数,第三个数与前两个数的最大公约 数的最大公约数即为所求。
例:如何算出8251和6105的最大公约数?
思考:你能把更相减损法编成一个算法吗?
除,一直除到所得的商是互质数为
止,然后把所有的除数连乘起来.
2. 思考:
小学学过的求两个数的最大 公约数的方Baidu Nhomakorabea?
先用两个公有的质因数连续去 除,一直除到所得的商是互质数为 止,然后把所有的除数连乘起来.
例:求下面两个正整数的最大公约数:
(1)求25和35的最大公约数 (2)求49和63的最大公约数
§7
中国古代数学中的 算法案例
学习目标:
1. 知道几个中国古代数学中的算法案例; 2. 通过问题的解决,领悟转化与划归的
数学思想方法;
3. 了解中国古代数学的成就,培养民族
自豪感,树立为国争光的理想.
一、求两个正整数最大公约数的算法
思考:小学学过的求两个数的最大 公约数的方法?
先用两个公有的质因数连续去
第二步 对6105和2146重复第一步的做法 6105=2146×2+1813 同理6105和2146的最大公约数也是2146 和1813的最大公约数。
完整的过程
8251=6105×1+2146 6105=2146×2+1813 2146=1813×1+333
例: 用辗转相除法求225和135的最大公约数 225=135×1+90 135=90×1+45 90=45×2 显然45是90和45的最大公约数,也就是 225和135的最大公约数 思考1:从上面的两个例子中可以看出计 算的规律是什么?
(1) 算法步骤: 第一步:输入两个正整数a, b. 第二步:如果a =b,输出最大公约数a, 并结束;
第三步:如果a>b, 则a=a-b,返回第二步;
如果a<b, 则b=b-a,返回第二步。
(2) 程序框图:
(3) 算法语句:
a=input("a="); b=input("b="); while a<>b if a>b a=a-b; else b=b-a; end end a
2
1 S2 n Sn n xn (1 hn ) 2
x2 n
xn x2 n (1 hn ) 2 2
2
xn
hn
n=6; 2 xn x=1; hn 1 2 c=input("次数="); 1 s=6*sqrt(3)/4; S2 n Sn n xn (1 hn ) 2 for i=1:1:c 2 h=sqrt(1-(x/2)^2); xn 2 x (1 h ) 2n n s=s+n*x*(1-h)/2; 2 n=2*n; x=sqrt((x/2)^2+(1-h)^2); end print(%io(2),n,s);
2、定义: 所谓更相减损术,就是对于给定的两个 数,用较大的数减去较小的数,然后将差和 较小的数构成新的一对数,再用较大的数减 去较小的数,反复执行此步骤直到差数和较 小的数相等,此时相等的两数便为原来两个 数的最大公约数。
3、方法: 例: 用更相减损术求98与63的最大公约数. 解:把98和63以大数减小数,并辗转相减 98-63=35 63-35=28 35-28=7 28-7=21 21-7=14 14-7=7 所以,98和63的最大公约数等于7
相关文档
最新文档