欧几里得算法(辗转相除法)求最大公约数代码

    求解最大公约数依据如下定理:gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0);

两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。

代码:

非递归算法:

int gcd(int a,int b) 
{
    int c;
    while(b>0)
    {
        c=a%b;//a,b不用区分大小,如果ab。
        a=b;
        b=c;
    }
    return b;
}

递归算法:

int gcd(int a,int b)
{
    return b==0?a:gcd(b, a%b);
}

 

你可能感兴趣的:(算法设计与分析)