Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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


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

最も簡単な方法の1つは、指定された項までのフィボナッチ数を生成し、それが10で割り切れるかどうかを確認することです。ただし、このソリューションは、長期的には機能しないため、適切ではありません。

別の良いアプローチは以下のようなものです-

フィボナッチ用語-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のLCMは15になります。したがって、15 番目ごと と言えます。 フィボナッチ項は10で割り切れます。

アイデアを得るためのアルゴリズムを見てみましょう。

アルゴリズム

fiboDivTen(term)

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

#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";
}

出力

Divisible

  1. Pythonで、数値の偶数の桁の積がKで割り切れるかどうかを確認します

    数nと別の数kがあるとすると、nの偶数の桁の積がkで割り切れるかどうかを確認する必要があります。場所は右から左に数え始めます。一番右は場所1です。 したがって、入力がn =59361のような場合、(1 * 3 * 5)は3で割り切れるので、出力はTrueになります。 これを解決するには、次の手順に従います- digit_count:=指定された数値nの桁数 prod:=1 0の場合、do digit_countが偶数の場合、 prod:=prod*nの最後の桁 n:=(n / 10)の商 digit_count:=digit_count-1 prodがkで割

  2. PythonプログラムのN番目のフィボナッチ数

    この記事では、n番目のフィボナッチ数を計算します。 フィボナッチ番号 以下に示す繰り返し関係によって定義されます: Fn =Fn-1 + Fn-2 F 0を使用 =0およびF1 =1。 最初のいくつかのフィボナッチ番号は0、1、1、2、3、5、8、13、.................. 再帰と動的計画法の方法を使用してフィボナッチ数を計算できます。 それでは、Pythonスクリプトの形式での実装を見てみましょう アプローチ1:再帰方法​​ 例 #recursive approach def Fibonacci(n):    if n<0: &n