最大公约数:即两个数据中公共约数的最大者。
求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法算法
此处主要介绍:辗转相除法
思路:
例子:18和24的最大公约数
第一次:a = 18 b = 24 c = a%b = 18%24 = 18
循环中:a = 24 b=18
第二次:a = 24 b = 18 c = a%b = 24%18 = 6
循环中:a = 18 b = 6
第三次:a = 18 b = 6 c=a%b = 18%6 = 0
循环结束
此时b中的内容即为两个数中的最大公约数。
//给定两个数,求这两个数的最大公约数
//
//例如:
//
//输入:20 40
//
//输出:20
//gcd(a,b)=gcd(b,a%b)=gcd(a%b,b)=gcd(a%b,a%b)=gcd(a%b,a%b%b)=...
int main() {
int a = 0;
int b = 0;
int r = 0;
scanf("%d %d", &a, &b);
while (r != 0) {
r = a % b;
a = b;
b = r;
}
printf("%d", b);
return 0;
}