已知a、b的值,且已知其可以表示爲如下形式:
a=qk0,b=qk1(q、k0、k1均爲正整數)
求p,使得:
p=qg,g=gcd(k0,k1)
p稱爲a、b間最大共比例。
當需要求很多個數的最大公比例時,直接求底數和指數很麻煩。於是我們可以運用輾轉相減法來解決:
設Q(a,b)爲a,b間最大公比例,則
Q(a,b)=Q(qk0,qk1)=qgcd(k0,k1)=qgcd(k1,k1−k0)=Q(qk1,qk1−k0)=Q(b,b/a)
反覆進行操作,直到a==b,就可以得到最大公比例。
用於此題的輾轉相減法代碼:
long gcd_sub(long a,long b)
{
if(a==b) return a;
if(a>b) return gcd_sub(b,a/b);
else return gcd_sub(b,a);
}