目录
一、最大公约数(Greatest Common Divisor)缩写为GCD。
二、最小公倍数(Least Common Multiple) 缩写为LCM。
一、最大公约数(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)辗转相除法(欧几里德算法):
流程图:
讲解:
两个数取余,将除数变成被除数,余数变成除数<