首页 > 代码库 > 最大公约数与扩展欧几里得算法
最大公约数与扩展欧几里得算法
一、朴素递归算法
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 */
最大公约数与扩展欧几里得算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。