在 C++ 中查詢具有給定索引的 N 個斐波那契數的 GCD


這裡我們必須找到具有給定索引的 n 個斐波那契項的 GCD。因此,我們首先必須獲得最大索引並生成斐波那契項,一些斐波那契項如下:0、1、1、2、3、5、8、13、21、34、……索引從 0 開始。因此,第 0索引處的元素為 0。如果我們必須在索引 {2、3、4、5} 處找到斐波那契項的 gcd,那麼這些項為 {1、2、3、4},所以這些數的 GCD 為 1。

我們將使用一種有趣的方法來完成此任務。要獲得第 i 和第 j 個斐波那契項的 GCD,例如 GCD(Fibo(i),Fibo(j)),我們可以將其表示為 Fibo(GCD(i,j))

示例

 線上演示

#include <iostream>
#include <algorithm>
using namespace std;
int getFiboTerm(int n){
   int fibo[n + 2];
   fibo[0] = 0; fibo[1] = 1;
   for(int i = 2; i<= n; i++){
      fibo[i] = fibo[i - 1] + fibo[i - 2];
   }
   return fibo[n];
}
int getNFiboGCD(int arr[], int n){
   int gcd = 0;
   for(int i = 0; i < n; i++){
      gcd = __gcd(gcd, arr[i]);
   }
   return getFiboTerm(gcd);
}
int main() {
   int indices[] = {3, 6, 9};
   int n = sizeof(indices)/sizeof(indices[0]);
   cout << "GCD of fibo terms using indices: " <<
   getNFiboGCD(indices, n);
}

輸出

GCD of fibo terms using indices: 2

更新於:2019 年 10 月 21 日

173 次瀏覽

開始您的職業生涯 生涯

完成本課程,獲得認證

開始
廣告
© . All rights reserved.