① 设两个数为m,n(m>n),它们的最大公约数为k,易得 m = a*k, n = b*k,其中a,b均与k不存在约数关系(k=1除外)
②gcd中"m%n"是一步关键操作,设 c = m%n = (a-t*b)*k,其中t属于正整数,然后重复gcd(n,c).
③ 可以发现(a - t*b)在不断变小(m,n不断接近)当a -t*b = 1时,此时n就为k,就有 c = m%n = 0,gcd(n,c),下一步判断c==0,返回值n = k.
④还有一个问题m,n在大小不用刻意求判断再交换,m若比n小会自动交换.
⑤ 对③举例: gcd(84,60) gcd(60,24),gcd(24,12),gcd(12,0).
对④举例:gcd(5,7),c = 5%7=5,n = 7,gcd(7,5).