基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
输入2个正整数A,B,求A与B的最大公约数。
2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)
输出A与B的最大公约数。
30 105
15
其实就是板子题, 会了模板就可以了,很简单
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
GCD(最大公约数)这里用代码实现用的是欧几里德算法(辗转相除法)
欧几里德算法(辗转相除法)
在两个数中,找出大数.用大数除以小数.得到整数商和余数.然后再不断地用除数(原来的小数)除以余数.直到没有余数为止.那么除数即为最大公约数.
例:求161与112的最大公约数.
161÷112=1……49
112÷49=2……14
49÷14=3……7
14÷7=2
所以161和112的最大公约数是 7
那我们这个样例来说:
次数 a b a%b
1 30 105 30
2 105 30 15
3 30 15 0
所以你不需要区分是a
这里提前说一下LCM(最小公倍数),它的求解是基于GCD上的
LCM(a, b) = ( a / GCD(a,b)) * (b / GCD(a,b)) * GCD(a,b)= a * b / GCD(a, b);