问题:求整数a和b的最大公约数
算法:欧几里得算法(又称辗转相除法),gcd(a,b) = gcd(a,a%b)
证明:
假设 a = b*q + r,p是a和b的一个公约数,那么
==> a = p*m
==> b = p*n
==> p*m = p*n*q +r
==> r = p*m - p*n*q
= p(m - n*q)
==> p也是r的公约数
同理,设t是b和r的公约数,也可得出t是a的公约数
==> (a,b)和(b,r)具有相同的公约数
==> gcd(a,b) = gcd(a,a%b)
算法:欧几里得算法(又称辗转相除法),gcd(a,b) = gcd(a,a%b)
证明:
假设 a = b*q + r,p是a和b的一个公约数,那么
==> a = p*m
==> b = p*n
==> p*m = p*n*q +r
==> r = p*m - p*n*q
= p(m - n*q)
==> p也是r的公约数
同理,设t是b和r的公约数,也可得出t是a的公约数
==> (a,b)和(b,r)具有相同的公约数
==> gcd(a,b) = gcd(a,a%b)