1. 程式人生 > >輾轉相除法--求最大

輾轉相除法--求最大

除法 輾轉相除法 操作 spa sub gcd 遞歸 col strong

基本操作:設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); }

輾轉相除法--求最大