Még Fibonacci számok összege
#practiceLinkDiv { display: none !important; } Adott határérték mellett keresse meg a Fibonacci-sorozat összes páros értékű tagjának összegét az adott határ alatt.
Az első néhány kifejezés Fibonacci számok vannak 11 2 3 5 8 13 21 34 55 89 144 233 ... (a páros számok kiemelve vannak).
Példák:
Input : limit = 8 Output : 10 Explanation : 2 + 8 = 10 Input : limit = 400; Output : 188. Explanation : 2 + 8 + 34 + 144 = 188.
Egy egyszerű megoldás az összes Fibonacci-szám iterációja, miközben a következő szám kisebb vagy egyenlő, mint a megadott határ. Minden számnál ellenőrizze, hogy páros-e. Ha a szám páros, adja hozzá az eredményhez.
Egy hatékony megoldás az alábbiakon alapul rekurzív képlet még Fibonacci számokhoz
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.
Utal ez a fenti képlet további részletei.
Tehát a Fibonacci-számok feletti iteráció során csak páros Fibonacci-számokat generálunk.
// 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>
Kimenet:
188
Időbeli összetettség: On)
Kiegészítő tér: O(1)