欧几里得算法又称辗转相除法,用于计算两个非负整数a,b的最大公约数。表明两个整数的最大公约数是能够同时整除它们的最大的正整数。计算公式gcd(a,b) = gcd(b,a mod b)。
辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。
结合参考资料进行推导演练:
设两数a、b(b<a)的最大公约数为c,c=gcd(a,b),且存在m,n,使得
① a=mc
② b=nc
令r为a除以b的余数,r=a mod b,即存在k使得
③ a=kb+r
求证b与r之间的最大公约数是否也为c(即a与b的最大公约数)
结合式子①②③可得 mc=knc+r,即得式子④ r=mc-knc=(m-kn)c
根据式子②和④ 证明 c为b与r的最大公约数,即证明m-kn与n互质(m-kn与n的最大公约数为1)
可通过反证法
假设存在p使得m-kn=pn,则得式子⑤r=pnc
集合式子②③⑤可得式子