Zelfs Fibonacci-getallen som

Zelfs Fibonacci-getallen som
Probeer het eens op GfG Practice #practiceLinkDiv {weergave: geen! belangrijk; }

Gegeven een limiet, zoek de som van alle termen met een even waarde in de Fibonacci-reeks onder de gegeven limiet.
De eerste paar termen van Fibonacci-getallen zijn 1 1 2 3 5 8 13 21 34 55 89 144 233 ... (Even getallen zijn gemarkeerd).
Voorbeelden:  
 

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


 

Aanbevolen praktijk Zelfs Fibonacci-getallen som Probeer het!


Een eenvoudige oplossing is om alle Fibonacci-getallen te doorlopen terwijl het volgende getal kleiner is dan of gelijk is aan de gegeven limiet. Controleer voor elk getal of het even is. Als het getal gelijk is, voegt u het toe aan het resultaat.
Een efficiënte oplossing is gebaseerd op het onderstaande recursieve formule voor zelfs Fibonacci-getallen
 

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. 


Refereren dit meer details van bovenstaande formule.
Dus terwijl we Fibonacci-getallen herhalen, genereren we alleen even Fibonacci-getallen. 
 

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>   

Uitgang:  
 

188 

Tijdcomplexiteit: Op)

Hulpruimte: O(1)


 

Quiz maken