a = b * k + r
gcd(a, b) = gcd(b, r)
设c = gcd(a, b), d = gcd(b, r)
c | a, 表示能够整除a
1.证出c <= d
因为c | a, c | b, r = a - b * k
所以c | r
既然 c 能够整除 b和r,而(b, r)的最大公约数为d
那么 c<=d
2.证出d <= c
因为a = b * k + r,d | b, d | r
所以d | a
既然 d 能够整除 a和b,而a, b的最大公约数为c
那么 d <= c
综上,d=c,即gcd(a, b) = gcd(b, a % b)
原文:https://www.cnblogs.com/wudongwei/p/9374648.html