1.辗转相除法
欧几里得算法是用来求两个正整数最大公约数的算法。古希腊数学家欧几里得在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里得算法。假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
算法实现
int main()
{
int a, b, t = 0;
scanf("%d %d", &a, &b);
while (a % b) //当a整除b时循环结束
{
t =a%b;
a = b; // 把b赋值给a
b = t; //余数重新赋值给b
}
printf("%d", b);
return 0;
}