ホームページ >バックエンド開発 >C++ >n 番目のフィボナッチ数が 10 の倍数であるかどうかを確認する効率的な方法はありますか?

n 番目のフィボナッチ数が 10 の倍数であるかどうかを確認する効率的な方法はありますか?

王林
王林転載
2023-09-05 08:05:08780ブラウズ

n 番目のフィボナッチ数が 10 の倍数であるかどうかを確認する効率的な方法はありますか?

ここでは、n 番目のフィボナッチ項が 10 の倍数であるかどうかを確認する効率的な方法を見ていきます。フィボナッチ項が {0、1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987} であるとします。したがって、ここで 15 番目のフィボナッチ数 (0 から数えて) は 10 で割り切れます。 16 の場合は true を返します。

最も簡単な方法の 1 つは、指定された項までのフィボナッチ数を生成し、それが 10 で割り切れるかどうかを確認することです。ただし、この解決策は大きなアイテムには機能しないため、適切ではありません。

もう 1 つの良い方法は次のとおりです。

フィボナッチ項 - 0、1、1、2、3、5、8、13、21、34、55、89、144、233、 377、610、987

これらの数字 (太字でマーク) は 2 で割り切れます。それらは 3 つのフィボナッチ項で区切られています。同様に、 -

フィボナッチ項を確認してください: 0、1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987

5 番目の項はすべて 5 で割り切れます。これで、3 と 5 の最小公倍数は 15 になります。したがって、すべての 15th フィボナッチ項は 10 で割り切れると言えます。

この考え方を理解するためにアルゴリズムを見てみましょう。

Algorithm

fiboDivTen(term)

Begin
   if term is divisible by 15, then
      return true
   end if
   return false
End

Example

の中国語訳は次のとおりです:

Example

#include<iostream>
using namespace std;
bool fiboDivTen(int term) {
   if(term % 15 == 0){
      return true;
   }
   return false;
}
int main() {
   int term = 45;
   if (fiboDivTen(term))
      cout << "Divisible";
   else
      cout << "Not Divisible";
}

Output

Divisible

以上がn 番目のフィボナッチ数が 10 の倍数であるかどうかを確認する効率的な方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。