求最大公约数可以用辗转相除法
求gcd{a,b} [假设a>b]
首先用b除a得商q0,余数r0,即
a=q0*b+r0, 0<=r0<b
1)若r0=0,则a,b最大公因子就是b,如果r0!=0则(a,b)=(q0,r0),继续2)
2)用r0除b得商q1,余数,r1
b=q1*r0+r1, 0<=r1<r0
若r1=0,则(b,r0)=r0,则(a,b)=r0
否则继续直到找到可以除尽为止
例:求(4862,2156)
4862=2*2156+550
2156=3*550+506
550=1*506+44
506=11*44+22
44=2*22
所以(4862,2156)=(2156,550)=...=(44,22)=22
求gcd{a,b} [假设a>b]
首先用b除a得商q0,余数r0,即
a=q0*b+r0, 0<=r0<b
1)若r0=0,则a,b最大公因子就是b,如果r0!=0则(a,b)=(q0,r0),继续2)
2)用r0除b得商q1,余数,r1
b=q1*r0+r1, 0<=r1<r0
若r1=0,则(b,r0)=r0,则(a,b)=r0
否则继续直到找到可以除尽为止
例:求(4862,2156)
4862=2*2156+550
2156=3*550+506
550=1*506+44
506=11*44+22
44=2*22
所以(4862,2156)=(2156,550)=...=(44,22)=22