1.3 算法案例

合集下载

高中数学 1.3 算法案例--进位制新课件 新人教版必修3

高中数学 1.3 算法案例--进位制新课件 新人教版必修3
• 电子计算机用的是二进制 。
十进制:
我们最常用最熟悉的就是十进制数,它的数值部分是十个不 同的数字符号0,1,2,3,4,5,6,7,8,9来表示的。
例如133.59,它可用一个多项式来表示:
133.59=1*102+3*101+3*100 +5*10-1+9*10-2
式中1处在百位,第一个3所在十位,第二个3所在 个位,5和9分别处在十分位和百分位。十进制数是逢 十进一的。
为了区分不同的进位制,常在数的右下角标明基数, 十进制一般不标注基数.
例如十进制的133.59,写成133.59(10) 七进制的13,写成13(7);二进制的10,写成10(2)
一般地,若k是一个大于1的整数,那么以k 为基数的k进制可以表示为一串数字连写在一起 的形式:
a n a n 1a 1 a 0 (k )( 0 a n k ,0 a n 1 ,,a 1 ,a 0 k ) .
结束
练习:
完成下列进位制之间的转化:
(1)10231(4)= (2)235(7)= (3)137(10)= (4)1231(5)= (5)213(4)= (6)1010111(2)=
(10); (10); (6); (7); (3);
(4)。
小结
• 1.进位制是一种记数方式,用有限的数 字在不同的位置表示不同的数值。可使 用数字符号的个数称为基数,基数为k, 即可称k进位制,简称k进制。k进制需要 使用k个数字;
课堂小结
1.十进制数与k进制数之间的转 化方法
2.体会用算法解决上述问题的 过程,体验算法在解决问题中 的重要作用
89=1×26+0×25+1×24+1×23+0×22+0×21+1×20

1.3算法案例(进位制)(yong)

1.3算法案例(进位制)(yong)
满十二进一,就是十二进制; 满六十进一,就是六十进制
思考:生活最常见的进位制是什么?除此之外还有
哪些常见的进位制?请举例说明. • 最常见的进位制应该是我们数学中的十进制,比 如一般的数值计算,但是并不是生活中的每一种 数字都是十进制的. • 古人有半斤八两之说,就是十六进制与十进制的 转换. • 比如时间和角度的单位用六十进制, 计算“一打” 数值时是12进制的。 • 电子计算机用的是二进制 。
思考:其它进制是否也有类似的规律呢?
八进制
7342(8) =783+382+48+2 110011(2)=125+124+023 +022+12+1
二进制
一般地,若k是一个大于1的整数,那么以k为基 数的k进制可以表示为以下形式:
a n a n 1 a 1 ( k ) ( 0 a n k , 0 a 1 , , a n 1 k ).
a×82+b×8+c=c×72+b×7+a,得:63a+b﹣48c=0, b=3(16c﹣21a), 由此知b是三的倍数,且是整数, ∴b=0,3,6, 21 a 当b=0时,可得c= 1 6 又1≤a≤6,检验知,不存在符合条件的a使得c是整数,
当3时,得c=
当b=6时,得c=
21a 1 16
开始
输入a ,k,n b=0 i=1
把a的右数第i位数字赋给t b=b+t*ki-1 i=i+1

i>n

输出结果b 结束
三、十进制化为k进制 思考:既然,k进制转化为十进制有前述的方法与 相应的算法,那么十进数又是如何才能转化为k进 数呢? 回想:a=anan-1…a2a1(k) =ankn-1+an-1kn-2+ …+a2k+a1 =b

1.3 算法案例 课件4

1.3 算法案例 课件4
1.3.3 进位制
人教A版高中数学必修三第一章
学习目标
1.了解各种进位制与十进制之间 转换的规律,会利用各种进位制与 十进制之间的联系进行各种进位制 之间的转换。 2.学习各种进位制转换成十进制的 计算方法,研究十进制转换为各种 进位制的除k去余法,并理解其中的 数学规律。
创设情景,揭示课题
我们常见的数字都是十进制的,但是并不是 生活中的每一种数字都是十进制的.比如时间 和角度的单位用六十进位制,电子计算机用的 是二进制.那么什么是进位制?不同的进位制之 间又又什么联系呢? 进位制是一种记数方式,用有限 的数字在不同的位置表示不同的数 值。可使用数字符号的个数称为基 数,基数为n,即可称n进位制,简 称n进制。现在最常用的是十进制, 通常使用10个阿拉伯数字0-9进行记 数。
例如十进制的133.59,写成133.59(10)
七进制的13,写成13(7);二进制的10,写成10(2)
一般地,若k是一个大于1的整数,那么以k 为基数的k进制可以表示为一串数字连写在一起
的形式:
anan1 a1a0(k ) (0 an k,0 an1,, a1, a0 k ).
例如133.59,它可用一个多项式来表示:
133.59=1*102+3*101+3*100 +5*10-1+9*10-2 式中 1 处在百位,第一个 3 所在十位,第二个 3 所在个位, 5 和9分别处在十分位和百分位。十进制数是逢十进一的。
为了区分不同的进位制,常在数的右下角标明基数,十进 制一般不标注基数.
余数
1 0 0 1 1 0 1
可以推广为把十进制数化为k进制数的算法,称为除k 取余法。
3、十进制转换为其它进制

§1.3算法案例

§1.3算法案例

为了区别进制,我们就用下 标(k)表示k进制数
an k
n1
an1 k
n 2
a3 k a2 k a1
2
下面我们来用一个具体的例子来分析:
例3.将二进制数110 011(2)化成十进制数
解 根据k进制数的实际意义,我们可以这样来转换:
110011(2) 1 2 1 2 0 2 0 2 1 2 1 2 1 32 1 16 1 2 1 51
已知一个5次多项式为
f ( x) 4x 2x 3.5x 2.6x 1.7 x 0.8
5 4 3 2

x5
用秦九韶算法求这个多项式的值。
根据秦几韶算法,把多项式改写成如下形式: f ( x) ((((4 x 2) x 3.5) x 2.6) x 1.7) x 0.8 按照从内到外的顺序,依次计算一次多项式当绵值: v0 4; v1 4 5 2 22; v2 22 3.5 113.5; v3 113.5 5 2.6 564.9; v4 564.9 5 1.7 2826.2; v5 2826.2 5 0.8 14130.2. 所以,当x 5时, 多项式的值等于14130.2.
3. 已知一个5次多项式为
f ( x) 5x 2x 3.5x 2.6x 1.7 x 0.8
5 4 3 2
用秦九韶算法求这个多项式当
x5
时的值。
思考:(1)上式计算时需要多少次乘法计 算?多少次加法计算? (2)在利用秦九韶算法计算n次多项式 当时需要多少次乘法计算和多少次加法计算?
f ( x) an xn an1xn1 an2 xn2 a1x a0 把一个多项式

人教版高中数学(必修3)1.3《算法案例》

人教版高中数学(必修3)1.3《算法案例》

2333
问题情境
物不知数” 孙子问题(“物不知数”)
今有物不知数,三三数之剩二, 今有物不知数,三三数之剩二, 五五数之剩三,七七数之剩二, 五五数之剩三,七七数之剩二, 问物几何? 问物几何? 答曰:二十三. 答曰:二十三
——《孙子算经》 ——《孙子算经》
学生活动
韩信点兵、 韩信点兵、孙子问题相当于
你能根据辗转相除法的算法步骤画出它的 程序框图以及相应的程序语句吗? 程序框图以及相应的程序语句吗? 辗转相除法求两个数的最大公约数, 辗转相除法求两个数的最大公约数, 程序: 程序: INPUT m,n
输入: 输入:m,n 开始
r=1 其算法可以描述如下: 其算法可以描述如下:
r=m MOD n 输入两个正整数m和 ; ① 输入两个正整数 和n; WHILE r<>0
问题情境
韩信点兵 孙子问题
问题情境
韩信点兵
士兵排成3列纵队进行操练,结果有 人多余 人多余; 士兵排成 列纵队进行操练,结果有2人多余; 列纵队进行操练 若排成5列纵队进行操练,结果有 人多余 人多余; 若排成 列纵队进行操练,结果有3人多余; 列纵队进行操练 若排成7列纵队进行操练,结果有 人多余 人多余. 若排成 列纵队进行操练,结果有2人多余 列纵队进行操练
算法设计思想: 算法设计思想:
首先,让 开始检验条件, 首先 让m=2开始检验条件 若三个条件中有一个不满足 开始检验条件 若三个条件中有一个不满足, 递增1,一直到同时满足三个条件为止 则m递增 一直到同时满足三个条件为止 递增 一直到同时满足三个条件为止. 除余2, 除余 除余3, 除余 除余1,不符; 如m=8,被3除余 ,5除余 ,7除余 ,不符; , 除余 除余0,不符; 如m=9,被3除余 ,不符; , 除余 =10, 3除余 不符; 除余1, 如m=10,被3除余1,不符; 可验证得: 可验证得:m=23 韩信何以很快知道队伍的人数? 韩信何以很快知道队伍的人数?

1.3算法案例(一)辗转相除法

1.3算法案例(一)辗转相除法

练习:
• 教材48页——1
程序框图
开始 输入m,n


求m除以n的余数r
m<n? 是
m=n t=m n=r
m=n n=t
r=0? 是 输出m


结束
程序语言
INPUT m,n IF n>m THEN t=m m=n n=t END IF DO r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m END
例1、用辗转相除法 求8251与6105的最大公因数
8251=6105×1+2146 6105=2146×2+1813
2146=1813×1+333 1813=333×5+148
333=148×2+37 148=37×4 8251与6105的最大公因数是37
辗转相除法:
给定两个正数,用 较大的数 除以 较小的数 ,
1.3算法案例(一)
辗转相除法
复习提问:
小学学过的求两个数的最大公约数的方法:
先用两个数公有的 质因数 连续去除,
一直除到所得的商是 互质数 为止,
然后把所有的除数 连乘 起来.
例如:求18与30的最大公约数.
2 3 18 9 3 30 15 5
所以18与30的最大公约数是2×3=6
1、辗转相除法
求得 商 和 余数 ,若余数不为一对数继续上面
的除法,直到大数被小数除尽,这时的 较小数
就是原来两数的最大公约数。
练习:
• 教材:45页——1
2、辗转相除法计算的程序框图及程序
算法步骤: • 第一步,给定两个正整数m,n. • 第二步,比较m,n的大小,若n>m则交换 m,n,否则直接执行下一步. • 第三步,计算m除以n所得的余数r. • 第四步,m=n,n=r. • 第五步,若r=0,则m,n的最大公约数等于m; 否则,返回第三步.

1.3 算法案例1---辗转相除法与更相减损术 8

1.3   算法案例1---辗转相除法与更相减损术 8

1.3 算法案例1.3 算法案例——案例1 辗转相除法与更相减损术8**学习目标**1.理解辗转相除法与更相减损术求最大公约数的方法。

2.把辗转相除法与更相减损术的方法转换成程序框图与程序语言.**要点精讲**1.辗转相除法例如,求两个正数8251和6105的最大公约数。

分析与解:8251与6105两数都比较大,而且没有明显的公约数,可以考虑用两数中较大的数除以较小的数,求得商和余数:8251=6105×1+2146显然8251与6105的公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数, 所以8251与6105的最大公约数也是6105与2146的最大公约数。

6105=2146×2+1813,2146=1813×1+333,1813=333×5+148333=148×2+37,148=37×4+0则37为37与148的最大公约数,也是148与333的最大公约数,也是333与1813的最大公约数,也是1813与2146的最大公约数,也是2146与6105的最大公约数。

所以,2146与6105的最大公约数是37。

以上我们求最大公约数的方法就是辗转相除法。

也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。

2.更相减损术我国早期也有解决求最大公约数问题的算法,就是更相减损术。

在《九章算术》中记载了更相减损术求最大公约数的步骤:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。

翻译为:(1)任意给出两个正数;判断它们是否都是偶数。

若是,用2约简;若不是,执行第二步。

(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。

继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。

**范例分析**例1.试分别用辗转相除法和更相减损术求840与1764、440与556的最大公约数。

人教版高中数学必修三课件:1.3 算法案例(共55张PPT)

人教版高中数学必修三课件:1.3 算法案例(共55张PPT)

解:用辗转相除法求最大公约数:612=468×1+144,468=144×3+36,144=36×4,即612
和468的最大公约数是36. 用更相减损术检验:612和468均为偶数,两次用2约简得153和117,153-117=36,11736=81,81-36=45,45-36=9,36-9=27,27-9=18,18-9=9,所以612和468的最大公约数为
转化为求n个一次多项式的值.
预习探究
知识点二 进位制
1.进位制:进位制是为了计数和运算方便而约定的记数系统,约定“满k进一”就 是 k进制 ,k进制的基数(大于1的整数)就是 k . 2.将k进制数化为十进制数的方法:先把k进制数写成各位上的数字与k的幂的乘积之和 的形式,再按照十进制数的运算规则计算出结果. 3.将十进制数化为k进制数的方法是 除k取余法 .即用k连续去除十进制数所得 的 商 ,直到商为零为止,然后把各步得到的余数 倒序 写出.所得到的就是相应的k 进制数. 4.k进制数之间的转化:首先转化为十进制数,再转化为 k进制数.
第一章 算法初步
1.3 算法案例 第2课时 秦九韶算法与进位制
预习探究
知识点一 秦九韶算法
1.秦九韶算法是我国南宋数学家秦九韶在他的著作《数书九章》中提出的一 个用于计算多项式值的方法. 2.秦九韶算法的方法: 把一个n次多项式f(x)=anxn+an-1xn-1+…+a1x+a0 改写成下列的形式: f(x)=(anxn-1+an-1xn-2+…+a1)x+a0= ((anxn-2+an-1xn-3+…+a2)x+a1)x+a0 =…=
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

=((11×2+0)×2+0)×2+1 ---除2取余法.
=(((5×2+1)×2+0)×2+0)×2+1
=((((2×2+1)×2+1)×2+0)× 2+0)×2+1
=(((((1×2)+0)×2+1)×2+1)×2+0)× 2+0)×2+1
=1×26+0×25+1×24 +1×23+0×22+0×21+1×20=1001(2).
以上我们求最大公约数的方法就是辗转相 除法。也叫欧几里德算法,它是由欧几里德在 公元前300年左右首先提出的。
辗转相除法求最大公约数算法: • 第一步,给定两个正数m,n • 第二步,计算m除以n所得到余数r • 第三步,m=n,n=r • 第四步,若r=0,则m,n的最大公约数等于m;
否则返回第二步
ELSE
m=n n=d
END IF
d=m-n
WEND
d=2 k*d
PRINT d END
辗转相除法与更相减损术的比较:
(1)都是求最大公约数的方法,计算上 辗转相除法以除法为主,更相减损术以减法为 主;计算次数上辗转相除法计算次数相对较少, 特别当两个数字大小区别较大时计算次数的区 别较明显。
(2)从结果体现形式来看,辗转相除法 体现结果是以相除余数为0则得到,而更相减损 术则以减数与差相等而得到.
2 5 25 121 608 3034 15170
所以,当x=5时,多项式的值是15170.
注意:n次多项式有n+1项,因此缺少哪一项 应将其系数补0.
一般地,对于一个n次多项式 f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0. 我们可以改写成如下形式:
f(x)=(…(anx+an-1)x+an-2)x+…+a1)x+a0. 求多项式的值时,首先计算最内层括号内一 次多项式的值,即 v1=anx+an-1,
显然8251与6105的最大公约数也必是2146 的约数,同样6105与2146的公约数也必是8251 的约数,所以8251与6105的最大公约数也是 6105与2146的最大公约数。
1.辗转相除法:
例1 求两个正数8251和6105的最大公约数。
解:8251=6105×1+2146;
6105=2146×2+1813; 2146=1813×1+333; 1813=333×5+148; 333=148×2+37; 148=37×4+0. 则37为8251与6105的最大公约数。
例4:把89化为二进制的数. 我们可以用下面的除法算式表示除2取余法:
2 89
2 44 2 22 2 11 25
v1=anx+an-1,
v2=v1x+an-2,
v3=v2x+an-3, ……, vn=vn-1x+a0.
观察上述秦九韶算法中的n个一次式,可见 vk的计算要用到vk-1的值. 若令v0=an,得
v0=an,
vK=vK-1x+an-k(k=1,2,……,n)
这是一个在秦九韶算法中反复执行的步 骤,因此可用循环结构来实现.
然后由内向外逐层计算一次多项式的值,即
v2=v1x+an-2, v3=v2x+an-3, ……, vn=vn-1x+a0.
这样,求n次多项式f(x)的值就转化为求n个 一次多项式的值.这种算法称为秦九韶算法.
点评:秦九韶算法是求一元多项式的值的 一种方法.
它的特点是:把求一个n次多项式的值转化 为求n个一次多项式的值,通过这种转化,把运算 的次数由至多n(n+1)/2次乘法运算和n次加法 运算,减少为n次乘法运算和n次加法运算,大大 提高了运算效率.
1.3 算法案例
案例1 辗转相除法与更相减损术
[问题1]:在小学,我们已经学过求最大公约数 的知识,你能求出18与30的最大公约数吗?
2 18 30 3 9 15 35
∴18和30的最大公约数是2×3=6.
先用两个数公有的质因数连续去除,一直除到所 得的商是互质数为止,然后把所有的除数连乘起 来.
=(((2x2-5x-4)x+3)x-6)x+7 v3=v2x+3=21×5+3=108
=((((2x-5)x-4)x+3)x-6)x+7 v4=v3x-6=108×5-6=534
变为求几个一次式的值
v5=v4x+7=534×5+7=2677 几个乘法
所以,当x=5时,多项式的值是2677. 几个加法?
意思是:(1)第一个数字an不能等于0; (2)每一个数字an,an-1,…,a1,a0都须小于k.
k进制的数也可以表示成不同位上数字与 基数k的幂的乘积之和的形式,即 anan-1…a1a0(k)=an×kn+an-1×kn-1 注意这是一
+…+a1×k1+a0×k0 . 个n+1位数.
[问题3]二进制只用0和1两个数字,这正好 与电路的通和断两种状态相对应,因此计算机 内部都使用二进制.计算机在进行数的运算时, 先把接受到的数转化成二进制数进行运算,再 把运算结果转化为十进制数输出.
i>=0?

输出v
结束
i=i-1
v=vx+ai 输入ai

案例3 进位制
[问题1]我们常见的数字都是十进制的, 但是并不是生活中的每一种数字都是十进制的. 比如时间和角度的单位用六十进位制,电子计 算机用的是二进制.那么什么是进位制?不同的 进位制之间又有什么联系呢?
进位制是人们为了计数和运算的方便而 约定的一种记数系统,约定满二进一,就是二 进制;满十进一,就是十进制;满十六进一,就 是十六进制;等等.
[问题2]有没有更高效的算法?
分析:计算x的幂时,可以利用前面的计算结 果,以减少计算量,
即先计算x2,然后依次计算
x2 x, (x2 x) x, ((x2 x) x) x
的值. 这析计算上述多项式的值,一共需要9次乘 法运算,5次加法运算.
第二种做法与第一种做法相比,乘法的运 算次数减少了,因而能提高运算效率.而且对于 计算机来说,做一次乘法所需的运算时间比做一 次加法要长得多,因此第二种做法能更快地得到 结果.
注意:为了区分不同的进位制,常在数字 的右下脚标明基数,. 如111001(2)表示二进制数,34(5)表示5进制数. 十进制数一般不标注基数.
[问题2]十进制数3721中的3表示3个千,7表示7 个百,2表示2个十,1表示1个一,从而它可以写成 下面的形式:
3721=3×103+7×102+2×101+1×100. 想一想二进制数1011(2)可以类似的写成什 么形式? 1011(2)=1×23+0×22+1×21+1×20.
[问题3]能否探索更好的算法,来解决任意多
项式的求值问题? 秦九韶《数书九章》.
f(x)=2x5-5x4-4x3+3x2-6x+7 v0=2
=(2x4-5x3-4x2+3x-6)x+7 v1=v0x-5=2×5-5=5
=((2x3-5x2-4x+3)x-6)x+7 v2=v1x-4=5×5-4=21
同理: 3421(5)=3×53+4×52+2×51+1×50.
C7A16(16)=12×164+7×163+10×162
+1×161+6×160.
一般地,若k是一个大于1的整数,那么以k为 基数的k进制数可以表示为一串数字连写在一起 的形式 anan-1…a1a0(k) (0<an<k,0≤an-1,…,a1,a0<k)
例2 用更相减损术求98与63的最大公约数. 解:由于63不是偶数,把98和63以大数
减小数,并辗转相减,
即:98-63=35; 63-35=28; 35-28=7; 28-7=21; 21-7=14; 14-7=7.
所以,98与63的最大公约数是7。
练习2:用更相减损术求两个正数84与72的最大
思考 :需不需要比较m,n的大小
不需要
程序框图
开始
输入两个正数m,n
r=m MOD n
m=n
n=r

r=0?

输出m
结束
练习1:利用辗转相除法求两数4081与20723
的最大公约数. (53)
20723=4081×5+318; 4081=318×12+265; 318=265×1+53; 265=53×5+0.
89=an×2n+an-1×2n-1+…+a1×21+a0×20 .
89=44×2+1, 44=22×2+0, 22=11×2+0,
11=5×2+1, 5=2×2+1, 2=1×2+0, 1=0×2+1,
89=44×2+1,
可以用2连续去除89
=(22×2+0)×2+1
或所得商(一直到商为 0为止),然后取余数
算法分析:
• 第一步,输入多项式次数n、最高次项的系数an和 x的值
• 第二步,将v的值初始化为an,将i的值初始化为 n-1
• 第三步,输入i次项的系数ai • 第四步,v=vx+ai,i=i-1 • 第五步,若i>=0,则返回第三步,否则输出v
相关文档
最新文档