2273. Day6 A - 最大公约数

小冰最近买了一大堆零食和饮料,一共有 a 包零食以及 b 杯饮料。他想要将这些零食和饮料尽可能多的分给冰冰妙妙屋中的小伙伴们。但有一个条件,每个小伙伴分到的零食和饮料数要相等,否则小伙伴们会吃醋的喵。也就是说,他需要找到一个数 k,使得 k 既能整除 a 也能整除 b

形式上,你需要找到 ab 的最大公约数 k

这道题的正确是辗转相除法,用到了递归以及函数的思想,它的结论是:ab 的最大公约数,等于 ba % b 的最大公约数。当 b 变为 0 时,a 就是所求的最大公约数。

gcd(a, b) = gcd(b, a % b),当 b 变为 0 时 a 即为所求。

输入

输入两个正整数,代表小冰给他的小伙伴们买的零食数 a (1 \leq a \leq 10^9) 和饮料数 b (1 \leq b \leq 10^9)

输出

输出零食数和饮料数的最大公约数 k

样例

标准输入 复制文本
54 24
标准输出 复制文本
6

提示

其中的一种辗转相除法的 c++ 实现如下:

int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 66
通过 45