最大公约数(Greatest Common Divisor)缩写为GCD。
使用辗转相除法(也叫欧几里得算法)求最大公约数。
定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
/*如果b等于0,计算结束,a就是最大公约数;
否则,计算a除以b的余数,让a等于b,而b等于那个余数;
回到第一步
a b t
12 18 12
18 12 6
12 6 0
6 0
*/
#include <stdio.h>
int main(int argc, char **argv) {
int a, b;
int t;
scanf("%d %d", &a, &b);
while(b != 0){
t = a%b;
a = b;
b = t;
}
printf("gcd = %d\n", a);
return 0;
}
记录。来自中国大学mooc。