Сума парних чисел Фібоначчі

Сума парних чисел Фібоначчі
Спробуйте на GfG Practice #practiceLinkDiv { display: none !important; }

За даної межі знайдіть суму всіх парних членів у послідовності Фібоначчі нижче заданої межі.
Перші кілька термінів Числа Фібоначчі є 1 1 2 3 5 8 13 21 34 55 89 144 233 ... (Парні числа виділено).
Приклади:  
 

Input : limit = 8 Output : 10 Explanation : 2 + 8 = 10 Input : limit = 400; Output : 188. Explanation : 2 + 8 + 34 + 144 = 188. 


 

Рекомендована практика Сума парних чисел Фібоначчі Спробуйте!


Просте рішення полягає в тому, щоб перебрати всі числа Фібоначчі, поки наступне число буде менше або дорівнює заданій межі. Для кожного числа перевірте, чи воно парне. Якщо число парне, додайте його до результату.
Ефективне рішення базується на наведеному нижче рекурсивна формула для парних чисел Фібоначчі
 

Recurrence for Even Fibonacci sequence is: EFn = 4EFn-1 + EFn-2 with seed values EF0 = 0 and EF1 = 2.   EFn   represents n'th term in Even Fibonacci sequence. 


Зверніться це більше деталей вищевказаної формули.
Тож під час ітерації чисел Фібоначчі ми генеруємо лише парні числа Фібоначчі. 
 

C++
   // Find the sum of all the even-valued terms in   // the Fibonacci sequence which do not exceed   // given limit.   #include       using     namespace     std  ;   // Returns sum of even Fibonacci numbers which are   // less than or equal to given limit.   int     evenFibSum  (  int     limit  )   {      if     (  limit      <     2  )      return     0  ;      // Initialize first two even Fibonacci numbers      // and their sum      long     long     int     ef1     =     0       ef2     =     2  ;      long     long     int     sum     =     ef1     +     ef2  ;      // calculating sum of even Fibonacci value      while     (  ef2      <=     limit  )      {      // get next even value of Fibonacci sequence      long     long     int     ef3     =     4  *  ef2     +     ef1  ;      // If we go beyond limit we break loop      if     (  ef3     >     limit  )      break  ;      // Move to next even number and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }      return     sum  ;   }   // Driver code   int     main  ()   {      int     limit     =     400  ;      cout      < <     evenFibSum  (  limit  );      return     0  ;   }   
Java
   // Find the sum of all the even-valued terms in   // the Fibonacci sequence which do not exceed   // given limit.   import     java.io.*  ;   class   GFG      {      // Returns sum of even Fibonacci numbers which are      // less than or equal to given limit.      static     int     evenFibSum  (  int     limit  )      {      if     (  limit      <     2  )      return     0  ;          // Initialize first two even Fibonacci numbers      // and their sum      long     ef1     =     0       ef2     =     2  ;      long     sum     =     ef1     +     ef2  ;          // calculating sum of even Fibonacci value      while     (  ef2      <=     limit  )      {      // get next even value of Fibonacci sequence      long     ef3     =     4     *     ef2     +     ef1  ;          // If we go beyond limit we break loop      if     (  ef3     >     limit  )      break  ;          // Move to next even number and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }          return  (  int  )     sum  ;      }          // Driver code      public     static     void     main     (  String  []     args  )         {      int     limit     =     400  ;      System  .  out  .  println  (  evenFibSum  (  limit  ));          }   }   // This code is contributed by vt_m.   
Python3
   # Find the sum of all the even-valued    # terms in the Fibonacci sequence which    # do not exceed given limit.   # Returns sum of even Fibonacci numbers which   # are less than or equal to given limit.   def   evenFibSum  (  limit  )   :   if   (  limit    <   2  )   :   return   0   # Initialize first two even Fibonacci numbers   # and their sum   ef1   =   0   ef2   =   2   sm  =   ef1   +   ef2   # calculating sum of even Fibonacci value   while   (  ef2    <=   limit  )   :   # get next even value of Fibonacci    # sequence   ef3   =   4   *   ef2   +   ef1   # If we go beyond limit we break loop   if   (  ef3   >   limit  )   :   break   # Move to next even number and update   # sum   ef1   =   ef2   ef2   =   ef3   sm   =   sm   +   ef2   return   sm   # Driver code   limit   =   400   print  (  evenFibSum  (  limit  ))   # This code is contributed by Nikita Tiwari.   
C#
   // C# program to Find the sum of all   // the even-valued terms in the    // Fibonacci sequence which do not   // exceed given limit.given limit.   using     System  ;   class     GFG     {          // Returns sum of even Fibonacci       // numbers which are less than or      // equal to given limit.      static     int     evenFibSum  (  int     limit  )      {      if     (  limit      <     2  )      return     0  ;          // Initialize first two even      // Fibonacci numbers and their sum      long     ef1     =     0       ef2     =     2  ;      long     sum     =     ef1     +     ef2  ;          // calculating sum of even       // Fibonacci value      while     (  ef2      <=     limit  )      {          // get next even value of       // Fibonacci sequence      long     ef3     =     4     *     ef2     +     ef1  ;          // If we go beyond limit      // we break loop      if     (  ef3     >     limit  )      break  ;          // Move to next even number      // and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }          return  (  int  )     sum  ;      }          // Driver code      public     static     void     Main     ()         {      int     limit     =     400  ;      Console  .  Write  (  evenFibSum  (  limit  ));          }   }   // This code is contributed by Nitin Mittal.   
PHP
      // Find the sum of all the    // even-valued terms in the    // Fibonacci sequence which    // do not exceed given limit.   // Returns sum of even Fibonacci   // numbers which are less than or    // equal to given limit.   function   evenFibSum  (  $limit  )   {   if   (  $limit    <   2  )   return   0  ;   // Initialize first two even    // Fibonacci numbers and their sum   $ef1   =   0  ;   $ef2   =   2  ;   $sum   =   $ef1   +   $ef2  ;   // calculating sum of   // even Fibonacci value   while   (  $ef2    <=   $limit  )   {   // get next even value of   // Fibonacci sequence   $ef3   =   4   *   $ef2   +   $ef1  ;   // If we go beyond limit   // we break loop   if   (  $ef3   >   $limit  )   break  ;   // Move to next even number   // and update sum   $ef1   =   $ef2  ;   $ef2   =   $ef3  ;   $sum   +=   $ef2  ;   }   return   $sum  ;   }   // Driver code   $limit   =   400  ;   echo  (  evenFibSum  (  $limit  ));   // This code is contributed by Ajit.   ?>   
JavaScript
    <  script  >   // Javascript program to find the sum of all the even-valued terms in   // the Fibonacci sequence which do not exceed   // given limit.      // Returns sum of even Fibonacci numbers which are      // less than or equal to given limit.      function     evenFibSum  (  limit  )      {      if     (  limit      <     2  )      return     0  ;          // Initialize first two even Fibonacci numbers      // and their sum      let     ef1     =     0       ef2     =     2  ;      let     sum     =     ef1     +     ef2  ;          // calculating sum of even Fibonacci value      while     (  ef2      <=     limit  )      {      // get next even value of Fibonacci sequence      let     ef3     =     4     *     ef2     +     ef1  ;          // If we go beyond limit we break loop      if     (  ef3     >     limit  )      break  ;          // Move to next even number and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }          return     sum  ;      }       // Function call          let     limit     =     400  ;      document  .  write  (  evenFibSum  (  limit  ));        <  /script>   

Вихід:  
 

188 

Часова складність: O(n)

Допоміжний простір: О(1)


 

Створіть вікторину