1.欧几里得算法求最大公约数
欧几里得算法基于的方法是重复应用以下等式,直到m mod n等于0.
gcd(m,n) = gcd(n,m mod n).
gcd(m,0) = m,m最后的取值也就是m和n的初值的最大公约数
举例:
gcd(60,24) = gcd(24,12) = gcd(12,0) = 12
欧几里得算法gcd(m,n)描述:
1)如果n = 0,返回m的值作为结果,同时过程结束;否则进入第二步
2)m除以n,将余数赋给r
3)将n的值赋给m,将r的值赋给n,返回第一步
伪代码描述:
Euclid(m,n)
while n != 0 do
r = m mod n;
m = n;
n = r;
return m;
2.欧几里得游戏
一开始黑板上有两个不同的数,两个玩家取两数的差,如果这个差不同于黑板上任何数,就写下来,轮到对方写;不能写出数的的一方为输家
考虑这样的两个数m和n,且m和n两个数是否互质的两种情况:
1)如果不是互质的,假定他们有最大公约数k >1;
令m = rk,n = tk,根据定义可知r和t是互质的,
那么差值(r-t)k,必然也是k的倍数,
那么问题可以提取出来只考虑互质的情况,如果不是互质通过求最大公约数获得互质的r和t,问题一般化为互质数差值个数
2)两个数m,n是互质的,其中m>n