码迷,mamicode.com
首页 > 编程语言 > 详细

最大公约数与扩展欧几里得算法

时间:2017-01-25 16:33:02      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:euc   logs   amp   span   put   oid   最大   bsp   欧几里得算法   

一、朴素递归算法

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 
*/

 

最大公约数与扩展欧几里得算法

标签:euc   logs   amp   span   put   oid   最大   bsp   欧几里得算法   

原文地址:http://www.cnblogs.com/9pounds15pence/p/6349597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!