【信息学奥赛】<2021>求最大公约数&&最小公倍数及两者关系

目录

一、最大公约数(Greatest Common Divisor)缩写为GCD。

1、题目

2、题解

 (1)朴素法:

(2)辗转相除法(欧几里德算法):

二、最小公倍数(Least Common Multiple) 缩写为LCM。

1、题目

2、题解

(1)朴素法:

(2)省流法:

三、最大公约数和最小公倍数的关系(GCD??LCM)

1、省流:lcm(a,b)*gcm(a,b)=a*b

2、原理

四、求三个数的最大公约数和最小公倍数

五、总结


一、最大公约数(Greatest Common Divisor)缩写为GCD

1、题目

题目描述:求两个正整数m,n的最大公约数。

输入:m,n。

输出:m,n的最大公约数

***注:最大公约数即为一个数同时是几个数的约数且是最大的那个***

输入样例:4 6   

输出样例:2

数据范围:对于全部数据:m,n<4000000。

2、题解

 (1)朴素法:

讲解:朴素法就是最简单易懂的方法。

上述代码先封装一个函数my_min()用来找到输入两个数的较小值。要求最大公约数无非就是找到两个数的因子中相同的那些中最大的一个,最大的一个因子不可能超过两个数中较小的那个,所以my_min()函数的作用体现在这。

 gcd_01()是求两个数最大公约数的朴素法,同样封装了函数。先找到输入两数的较小值,然后通过从可能的最大因数试除,逐渐减小因数。一旦符合if条件语句遍历的i即为最大的那个公约数。

思考:与从1开始遍历找最大公约数,省去了判断找到的公因数是否是最大的那一个,本方法更巧妙一些。

(2)辗转相除法(欧几里德算法):

流程图:

讲解:

两个数取余,将除数变成被除数余数变成除数<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值