最大公约数与扩展欧几里得算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大公约数与扩展欧几里得算法相关的知识,希望对你有一定的参考价值。
一、朴素递归算法
int zuidagongyueshu(int m, int n) { if (n == 0) { return m; } return zuidagongyueshu(n, m % n); }
二、迭代算法
int zuidagongyueshu2(int m, int n) { while (n!=0) { int tmp=m%n; m=n; n=tmp; } return m; }
三、扩展欧式算法
void exEuclid(int a, int b, int&x, int&y) { if (b==0) { if (a!=1) { puts("Mei you jie la QwQ"); } x=1; y=0; return; }//据说不停的算b总会有一天到0 int k=a/b,c=a%b; exEuclid(b,c,x,y); int xp=x,yp=y; x=yp; y=xp-k*yp; } /* 类比辗转相除法 不停地迭代 a = kb + d (kb + d)x + by = c b(kx + y) + dx = c */
以上是关于最大公约数与扩展欧几里得算法的主要内容,如果未能解决你的问题,请参考以下文章