1.3算法案例-完整PPT课件

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

例1、求8251和6105的最大公约数。
解:
(8251,6105)
8251=6105×1+2146 =(6105,2146)
6105=2146 ×2+1813 =(2146,1813)
2146=1813 ×1+333 =(1813,333)
1813=333 ×5+148 =(333,148)
333=148 ×2+37
1.3 算法案例
1.3 算法案例
1.3.1 辗转相除法和更相减损术 1.3.2 秦九韶算法 1.3.3 K进制与十进制互化
韩信是秦末汉初的著名军事家. 情境创设
秦朝末年,楚汉相争.韩信帅1500名将士与楚 王大将李锋交战。苦战一场,楚军不敌,败退 回营,汉军也死伤四五百人,于是韩信整顿兵 马也返回大本营。当行至一山坡,忽有后军来 报,说有楚军骑兵追来。只见远方尘土飞扬, 杀声震天。汉军本来已十分疲惫,这时队伍大 哗。韩信急速点兵迎敌。他命令士兵3人一排, 结果多出2名;接着命令士兵5人一排,结果多 出3名;他又命令士兵7人一排,结果又多出2 名。韩信马上向将士们宣布:我军有1073人, 敌人不足五百,我们居高临下,以众击寡,一 定能打败敌人。
一个数除以3余2,除以5余3,除以7余2,求
符合条件的最小数.
解:第1步 先列出满足其中一个条件的数(一般从小到大),即除以3余 2的数:
2, 5, 8, 11, 14, 17, 20, 23, 26,…, 第2步再列出满足其中第二个条件的数,即除以5余3的数:
3, 8, 13, 18, 23, 28,…. 第3步归纳前面第3步首先出现的公共数是8. 8就是满足除以3余2,除以5余3的最小的那个数。 3与5的最小公倍数是15.两个条件合并成一个就是8+15×n (n=0,1, 2,…)。 列出这一串数是8, 23, 38,…, 第4步再列出满足其中第三个条件的数,即除以7余2的数
2, 9, 16, 23, 30,…, 第5步归纳第3步第4步得到的数列。就得出符合题目条件的最小数是23. 事实上,我们已把题目中
三个条件合并成一个。3,5,7的最小公倍数是 105 ,满足三个条件的 所有数是23+105×n(n=0,1,2,…)
第6步那么韩信点的兵在1000-1100之间,应该是23+105×10=1073人
=(148,37)
148=37 ×4
=37
练习:用辗转相除法求下列两数的最大公 约数: (1) (225,135) 45 (2) (98,196) 98
思考3:辗转相除直到何时结束? 主要运用的是哪种算法结构?
辗转相除法是一个反复执行直到余数等 于0停止的步骤,这实际上是一个循环 结构
思考4:你能根据辗转相除法的 算法步骤画出它的程序框图以及 相应的程序语句吗?
韩信点兵问题的解决方法实质上就 是中国剩余定理,中国古代在数学 史上作出过重大贡献,有很多经典 方法被传承下来。
探究一,辗转相除法
思考1:在小学中我们是如何求出两个正整数的 最大公约数的呢?
算法案例之求最大公约数
例、求18与24的最大公约数:
解:2 1 8 2 4 用公有质因数2除, 3 9 1 2 用公有质因数3除, 短除法 3 4 3和4互质不除了。
定义:所谓的辗转相除法,就是对于给定 的两个数,用较大的数除以较小的数,若 余数不为零,则将余数和较小的数构成 新的数对,继续上面的除法,直到大数被 小数除尽,则这是较小的数就是原来两 个数的最大公约数.
辗转相除法的理论基础:
定理: 已知m,n,r为正整数,若m=nq+r(0≤r<n) (即r=m MOD n),则(m,n)=(n,r)。
穷举法
穷举法(也叫枚举法)步骤: 从两个数中较小数开始由大
到小列举,直到找到公约数立即 中断列举,得到的公约数便是最 大公约数 。
思考2:当两个数的公有质因数较大时,我们怎 样去求两个数的最大公约数呢?
辗转相除法:用于求两个正整数的最大公 约数的一种算法,是由欧几里得在公元 前300年左右首先提出的,因而又叫做 欧几里得算法.
探究二,更相减损术
<九章算术> “可半者半之,不可半者,副置分母、 子之数,以少减多,更相减损,求其等也, 以等数约之。”
即:a,b,c为正整数,若a-b=c,则(a,b)=(b,c)。
“更相减损术”(也是求两个正整数的最大公约数的算法) 步骤:
第一步:任意给定两个正整数;判断他们是否都是偶 数。若是,则用2约简;若不是则执行第二步。
得:18和24最大公约数是:2×3=6
求以下几组正整数的最大公约数。
(注:若整数m和n满足n整除m,则(m,n) =n。用(m,n)来表示m和n的最大公约数。) (1) (18,30) 6; (2) (24,16) 8; (3) (301,133 ) 7;
想一想,如何求8251与6105的最大公约数?
更相减损是一个反复执行直到 减数等于差时停止的步骤,这 实际也是一个循环结构
开始
输入:m,n
INPUT m,n
百度文库
r=1
r=m MOD n
WHILE r<>0 r=m MODm=nn
m=n
n=r
n=r
WEND
N r=0?
PRINT m
Y
END
输出:m
结束
程序: INPUT “m,n=”;m,n DO r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m END
第二步:以较大的数减较小的数,接着把所得的差与 较小的数比较,并以大数减小数。继续这个操作,直 到所得的减数和差相等为止,则这个等数就是所求的 最大公约数。
例2、用更相减损术求98与63的最大公约数 (自己按照步骤求解)
解:由于63不是偶数,把98和63以大数减小数,辗转相减。
(98,63) 98-63=35 =(63,35)
63-35=28 =(35,28)
35-28=7 =(28,7)
28-7=21 21-7=14
=(21,7) =(14,7)
14-7=7 =(7,7) = 7
所以,98和63的最大公约数等于7。
练习:用更相减损术求下列两数的最大公约数:
(1)(225,135) 45 (2)(98,196) 98
思考:更相减损直到何时结束?运用的是哪种 算法结构?
相关文档
最新文档