欧几里得算法,也叫做辗转相除法,gcd(a, b) = gcd (b, a%b),即a和b最大公约数等于b和a%b的最大公约数。相信大家都会用,但是很多人不知道为什么,我也看了很多文章,写的都不太相同,这里我说说我自己的证明过程:
这里的证明我分为两步求证:
1.求证:a和b的公约数等于b和a%b的公约数;
2.求证:b和a%b的公约数是最大公约数。
求证1:a和b公约数等于b和a%b的公约数
为了方便大家看,我先把下面用到的变量注一下:
n:公约数 m:a%b k、k'、k'':都是常数
(先不看,跟着我的思路走,过程中忘了哪个变量是干什么的再回来看一下)
这里设一个n,n是a和b的一个公约数,所以有
a/n = k' , b/n = k'' (k'和k''都是常量) --------------①
这里既然证明a和b最大公约数等于b和a%b的最大公约数,那么这里你还需要有这三个数,a和b是已知的,那么这里我们设m = a % b (m ≠ 0 ,若m=0,b一定是a和b的最大公约数),那么
a = kb + m (k是一个常量)
欧几里得算法证明
最新推荐文章于 2022-10-04 20:38:23 发布