深度理解GCD

深度理解欧几里得算法

欧几里得算法弱者的福音!!!

作为一个从来没有真正理解\(gcd\)的人,我今天终于搞明白了!!!

一般来说,gcd都是递归求解的,下面解释一下原理。

结论

首先我相信大家都记得到结论吧:gcd(a,b)=gcd(b,a%b)(保证\(a\)大于\(b\)

递归出口就是:if(a==1||b==0) return a;

如果不是很明白可以先看下面。

证明

\(a\%b\)的约数一定含有\(a\)\(b\)的最大公约数\(d\)

首先,我们设\(d=gcd(a,b)\),即设\(d\)\(a\)\(b\)的最大公约数。那么我们可以将原式改写为\(gcd(k_a\times d,k_b\times d)\)(保证\(a\)大于\(b\),下同)。因为这时候\(d\)已经是最大公约数了,所以此时\(k_a\)\(k_b\)一定是互质的。接下来我们将\(gcd(b,a\%b)\)\(a\%b\)转换一下,变为\((k_a\times d)\%(k_b\times d)\)

我们再把取余换做减法\((k_a\times d)-t_{max}\times(k_b\times d)\),这里的\(t_{max}\)表示最大的\(t\)使得\(t\times (k_b\times d)\)小于等于\((k_a\times d)\)成立。化简一下就会变成\((k_a-t_{max}\times k_b)\times d\)。很明显,\(a\%b\)也含有\(a\)\(b\)的最大公约数\(d\)。并且\(a\%b<b\leq a\),这样就缩小了范围。

公式\(gcd(a,b)=gcd(b,a\%b)\)

接下来,我一直有一个疑惑,为什么公式是\(gcd(a,b)=gcd(b,a\%b)\),而不是\(gcd(a,b)=gcd(a,a\%b)\)

首先我们将\(a\%b=(k_a-t_{max}\times k_b)\times d\)中的\((k_a-t_{max}\times k_b)\)替换为\(k_r\),那么\(a\%b=k_r\times d\),方便理解。

那么公式变为\(gcd(k_a\times d,k_b\times d)=gcd(k_b\times d,k_r\times d)\)。如果说\(k_b\)不和\(k_r\)互质,那么就不能成立了,因为此前我们已经设\(d\)为最大公约数了,那么如果不互质,那么\(d\)显然有更大的值。那究竟\(k_b\)\(k_r\)互质吗?

\(k_b\)\(k_r\)互质

反证法。首先我们有式子\(k_r=k_a-t_{max}\times k_b\),设\(k_r\)不与\(k_b\)互质,那么设他们的公因数为\(p\)

将原式转化为\(x\times p=k_a-t_{max}\times y\times p\),移项得到\((x+t_{max}\times y)\times p=k_a\),观察式子发现此时\(k_a\)包含因子\(p\),然而我们上面假设的\(k_b\)也含有因子\(p\),这样\(k_a\)\(k_b\)就不互质了,很明显违背了最开始的设定,故\(k_r\)\(k_b\)不互质的假设不成立。

\(k_a\)\(k_r\)不一定互质

此时我们反过来看\(gcd(a,b)=gcd(a,a\%b)\),同样把他转换一下变为\(gcd(k_a\times d,k_b\times d)=gcd(k_a\times d,k_r\times d)\)。我们可以很容易够造出一组反例(还是保证\(a\)大于\(b\))。

\(k_a=5\times 7\)\(k_b=2\times 3\),带入原式得到\(gcd(5\times 7\times d,2\times 3\times d)=gcd(5\times 7\times d,5\times d)\),这很明显\(k_a\)不与\(k_r\)互质。

模拟过程

就拿上面的例子来解释一下。

\[\begin{matrix} gcd(2\times 3\times d,5\times 7\times d)=gcd(5\times 7\times d,2\times 3\times d) \\ gcd(5\times 7\times d,2\times 3\times d)=gcd(2\times 3\times d,5\times d) \\ gcd(2\times 3\times d,5\times d)=gcd(5\times d,d) \\ gcd(5\times d,d)=gcd(d,0) \\ return\ d; \end{matrix} \]

第一步是保证\(a\)大于\(b\),接下来一直取余,直到\(b\)\(0\),然后\(return\)

posted @ 2022-11-24 10:00  GXYZY  阅读(418)  评论(1)    收藏  举报