辗转相除法求最大

基本操作:设a<b,a÷b=q...r1

若r1=0,则最大公约数为r1

若r1!=0,则b÷r1=q...r2

r1÷r2=q...r3

直到rn为0为止

示例:280 380

280÷380=0...280

380÷280=1...100

280÷100=2...80

100÷80=1...20

80÷20=4...0

所以,最大公约数是20

代码一:循环

int gcd(int a,int b)//默认a<b
{
    while(a%b!=0)
    {
        int t=a%b;
        a=b;
        b=t;
    }
    return b;
}

代码二:递归

int gcd(int a,int b)//默认a<b
{
    return b==0?a:gcd(b,a%b);
}
原文地址:https://www.cnblogs.com/xyfs99/p/10066177.html