logo

Soma par de números de Fibonacci

Experimente no GfG Practice ' title= #practiceLinkDiv { display: nenhum! Importante; }

Dado um limite, encontre a soma de todos os termos de valor par na sequência de Fibonacci abaixo do limite determinado.
Os primeiros termos de Números de Fibonacci são 1 1 2 3 5 8 13 21 34 55 89 144 233 ... (Os números pares são destacados).
Exemplos:  
 

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


 

Prática recomendada Soma par de números de Fibonacci Experimente!


Uma solução simples é iterar todos os números de Fibonacci enquanto o próximo número é menor ou igual ao limite determinado. Para cada número verifique se é par. Se o número for par, adicione-o ao resultado.
Uma solução eficiente é baseada no seguinte fórmula recursiva para números pares de Fibonacci
 



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.


Consulte esse mais detalhes da fórmula acima.
Portanto, ao iterar sobre os números de Fibonacci, geramos apenas números pares de Fibonacci. 
 

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> 

Saída :  
 

188

Complexidade de tempo: Sobre)

Espaço Auxiliar: O(1)

mysql alterar tipo de coluna