版权声明:Edited by I Hsien https://blog.csdn.net/POTASSIUM711/article/details/88074920
欧几里得辗转相除法
最大公因数的定义略,先 来看上一篇文章中提到的"abbr"定理的推论.
设a,b为不全为0的整数,则(a,b)=(a+bq,b)=(a,b+aq).
在公式形式上,有
qb+a="a",
a=′r′,
b=′b′,也就是说形式上跟abbr没有什么区别.
接下来说一下欧几里得辗转相除的用途和方法.
用途:求两个不全为0整数的最大公因数
原理,就是上面的abbr定理的变种.最核心的就是由已知的
a+bq构造a和b.
就像这样:(注:下面的余数r都是严格区间内的余数)
Assign
r0=a,
r1=b,
r0=r1q1+r2r1=r2q2+r3... ...rn−2=rn−1qn−1+rnrn−1=rnqn+0
用语言解释,就是说不断做a/b的带余除法,除得的商做下一个被除数,余数做下一个除数.又因为余数的严格区间的,所以一定小于商,所以下一次的余数一定不会等于被除数.
那是不是所有的a,b组合都能经过有限步除到最后余数=0呢?答案是所有的都可以.证明如下:
proof∵ ∀i in the process总有ri+1<ri又ri∈zri是有限的.∴ ∃ ri=0.
那为什么是
rn是最小公因数呢?
proof(a,b)=(r0,r1)(r0,r1)=(r1,r2)(r1,r2)=(r2,r3)......=(rn−2,rn−1) =(rn−1,rn)又rn∣rn−1(rn−1,rn)=rn
那么,根据上面的计算过程,可以得出以下结论:
(1)(a,b)=rn(2)∃s,t∈z→rn=sa+tb(3)∀c∈z, if c∣a and c∣b,→ c∣rn.
第一个已经证明了,第三个也很好想.
接下来我们关注于第二条性质:
为什么存在?
如何求得?
注:这条定理也叫裴蜀定理(等式)
由最后一个式子
rn−2=rn−1qn−1+rn,有
rn=rn−2−rn−1qn−1
再对
rn−1进行形式拆分,有
rn−1=rn−3−rn−2qn−2
再对
rn−2进行形式拆分,有
rn−2=rn−4−rn−3qn−3
…
直到
r2=r0−r1q1
又上述全部过程的参数都是整数
所以存在整数s,t,使得…
所以产生了如下的迭代方法:
S0=0S1=1Si+1=Si−1−qn−iSi迭代所得的Sn−1,Sn满足Sn−1a+Snb=rn
比如对于(30111,4520)
有表格:
i |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
qn−i |
|
|
2 |
1 |
1 |
4 |
1 |
21 |
1 |
1 |
1 |
6 |
Si |
0 |
1 |
-2 |
3 |
-5 |
23 |
-28 |
611 |
-639 |
1250 |
-1889 |
12584 |
是怎么求得每一个的
si的呢?
由递推公式,
Si=Si−2−Si−1qn−i,于是在表格上进行如下操作:
S0=0,S1=1S2=S0−(S1∗2)S3=S1−(S2∗1)... ...
这就很清楚了.所以在做这种题的时候要把表格列出来.
几点注意事项:
- i从0到n-1;
- q从
q0开始从右至左;
-
Si从左到右算;
Here it is.
这玩意用计算机计算更有意思,得空写一个放上来.