欧几里得算法,也称辗转相除法,是解决数学类问题中求两个数的最大公约数的常用算法,其原理为:
gcd(x,y)=gcd(y,x(mod y))
那么现在我们要证明其原理的正确性
证明:
1.
我们要证明x,y的最大公约数与y,x mod y的最大公约数相等
我们不妨设x=ky + b,显然有b=x mod y
b=x−ky
继续设x mod d=0 && y mod d=0
则有等式x/d−(y/d)∗k=b/d
由等式左边可得,d∣b
分析等式可得d是x,y的公约数,它也会是y,x mod y的公约数
2.
反过来也需要证明
设y mod d=0 && b mod d=0
我们依然可以得到之前的等式:
x/d−(y/d)∗k=b/d
即 b/d+(y/d)∗k=x/d
左边的式子即为整数,所以d|x
既然有整数d既是x,y的公约数,又是y,x的公约数
那么我们完全可以得出gcd(x,y)=gcd(y,x(mod y))
则欧几里得算法的正确性是毋庸置疑的
证毕