求两个数的最大公约数

原理:辗转相除法

递归写法

int gcd(int n,int m)
{
    int tmp;
    while(n%m!=0)
    {
        tmp=n%m;
        n=m;
        m=tmp;
    }
    return m; 
}

非递归写法

看图有助于理解

int gcd(int n,int m)
{
    if(n%m==0)return m;
    return gcd(m,n%m);
}

练习:http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1013

http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1014

posted on 2015-03-22 15:19  kylehz  阅读(166)  评论(0)    收藏  举报