辽宁省信息学文字公益课《跟我学NOIP》开课啦!第四课:GCD和LCM

网友投稿 2019-06-12 11:15

为了让同学们能够利用零散时间学习NOIP,辽竞委经过课程调研后,尝试采用文字版公益课进行教学。课程共分十期,聘请NOI国赛选手按照竞赛大纲归纳知识点,采用文字和视频讲解,结合练习题和题解帮助同学们快速掌握NOIP的重点和难点。由于课程都是利用业余时间编写,无法保证定期推出课程,我们尽量每周三,周末推出两期内容供大家学习,不便之处请大家谅解。文字公益课处于探索阶段,希望大家多提意见和建议,对于课程中的问题可以在留言区提问,我们会尽快进行解答。

《跟我学NOIP》面向全社会征集文字课程内容。欢迎竞赛教师,竞赛学生和社会机构踊跃投稿,共同为信息学普及和发展贡献一份力量。

上期作业解析(感谢51nod提供的视频)

第四课 GCD和LCM

GCD的求法

1、枚举法

枚举出a,b两个数中最小数到1的所有数,判断能否整除a和b。 

https://cdn.china-scratch.com/timg/190614/1115102010-0.jpg      

2、    质因数分解法

根据唯一分解定理,将a和b分解成质因数的形式,然后分别取两个数相同质因数的最小幂次的乘积即为gcd(a,b)。

比如:a=36=2^2*3^2 , b=48=2^4*3^1,根据上述定理可得出gcd(36,48)=2^min(2,4)*3^min(2,1)=2^2*3^1=12

代码参照上节课习题

3、    更相减损数(辗转相减法)

方法如下:gcd(a,b)=gcd(b,a-b)  (a>=b)

代码如下:

https://cdn.china-scratch.com/timg/190614/1115106420-1.jpg

4、    欧几里得(辗转相除法)

方法如下:gcd(a,b)=gcd(b,a mod b)

代码如下:

https://cdn.china-scratch.com/timg/190614/1115102N5-2.jpg

5、       二进制

对于高精度计算还可以采用二进制算法,本课程不做重点讨论。

LCM的求法

方法如下:两个数a,b的最大公倍数lcm(a,b)=a*b/gcd(a,b),因此只需要将gcd的代码稍作修改即可得到lcm的代码。

巩固练习:

给出N个正整数,找出N个数两两之间最大公约数的最大值。例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5。

https://cdn.china-scratch.com/timg/190614/1115115922-3.jpg

作业提交评测请登录:

http://class.51nod.com/Course/Problem.html#!#courseProblemId=390&classId=22

作业解析:

将在下次”跟我学NOIP”给出题解,敬请关注!

往期链接:

辽宁省信息学文字公益课《跟我学NOIP》开课啦!第一课:快速幂

辽宁省信息学文字公益课  《跟我学NOIP》开课啦!第二课:质数和约数

辽宁省信息学文字公益课《跟我学NOIP》开课啦!第三课:常见质数筛法

公益课发起人

https://cdn.china-scratch.com/timg/190614/1115113231-4.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com