📜  偶数斐波纳契数之和

📅  最后修改于: 2021-04-29 04:56:05             🧑  作者: Mango

给定一个极限,找到低于给定极限的斐波那契数列中所有偶数项的总和。
Fibonacci数的前几个术语是,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 prime 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 prime 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 prime 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
        // prime 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
 $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


输出 :

188