gcd and fibonacii

前两天看到一个比较奇怪的公式,然后队友让证明一下,公式如下

$$
gcd(f_i,f_j) = f_{gcd(i,j)}
$$

下面给出证明

$gcd(f_i,f_{i-1}) = 1$

\begin{eqnarray}
gcd(f_i,f_{i-1}) &=& gcd(f_{i-1}+f_{i-2},f_{i-1})\\
&=& gcd(f_{i-2},f_{i-1})\\
&=& gcd(f_{i-3},f_{i-2})\\
&=& \dots\\
&=& gcd(f_1,f_2)\\
&=& 1\\
\end{eqnarray}

$f_{i+j} = f_{i-1}\cdot f_j + f_i\cdot f_{j+1}$

首先,$j = 1$时有 $f_{i+1} = f_{i-1}+f_i$ 显然成立,

当$j = 2$时有

\begin{eqnarray}
f_{i+2} &=& f_{i+1} + f_{i}\\
&=& (f_{i}+f_{i-1}) + f_{i}\\
&=& f_{i-1} \cdot 1 + f_{i} \cdot 2\\
&=& f_{i-1} \cdot f_j + f_i \cdot f_{j+1}\\
\end{eqnarray}

然后我们证明,当$j = k-1$和$j = k-2$成立时,$j = k$也成立

也就是说已知

$$
\begin{cases}
f_{i+k-1} &=& f_{i-1}\cdot f_{k-1} + f_{i}\cdot f_k\\
f_{i+k-2} &=& f_{i-1}\cdot f_{k-2} + f_{i}\cdot f_{k-1}\\
\end{cases}
$$

然后我们累加上面两式,可以得到

$$
f_{i+k-1}+f_{i+k-2} = f{i-1}\cdot f_{k-1} + f_{i}\cdot f_k + f{i-1}\cdot f_{k-2} + f_{i}\cdot f_{k-1}
$$

$$
\therefore
\begin{eqnarray}
f_{i+k} &=& f_{i-1}\cdot (f_{k-1}+f{k-2}) + f_{i}\cdot (f_{k}+f_{k-1})\\
&=& f_{i-1}\cdot f_{k} + f_{i}\cdot f_{k+1}\\
\end{eqnarray}
$$

$ gcd(f_{i+j},f_{i}) = gcd(f_{i},f_{j}) $

$$
\begin{eqnarray}
gcd(f_{i+j},f_{i}) &=& gcd(f_{i-1}\cdot f_j + f_i\cdot f_{j+1},f_{i})\\
&=& gcd(f_{i-1}\cdot f_{j},f_{i})\\
&=& gcd(f_{j},f_{i}) (\because gcd(f_{i},f_{i-1}) = 1)\\
\end{eqnarray}
$$

所以上面的结论可以继续推广,容易得到

$$
gcd(f_{i},f_{j}) = gcd(f_{i\%j},f_{j})
$$

$gcd(f_{i},f_{j}) = f_{gcd(i,j)} $

由上面的结论,我们容易得到,我们不断调用上面的结论,直到$i==1||j==1$,然后可以得到,如果$k=gcd(i,j)$,那么有$gcd(f_{i},f_{j}) = gcd(f_{k},f_{1}) = f_{k} = f_{gcd(i,j)}$

命题得证