Problem 2(Even Fibonacci numbers)
Problem 2(Even Fibonacci numbers)
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
In Python:
i=1
limit=4000000
sum=0
def fibonacci(n):
if n==1:
return 1
elif n==2:
return 2
else:
return fibonacci(n-2)+fibonacci(n-1)
while fibonacci(i)<limit:
if fibonacci(i)%2==0:
sum+=fibonacci(i)
i+=1
print(sum)
Run time: 5.832750082015991 seconds
In Java:
package project_euler;
public class Euler2 {
public static void main(String[] args) {
int i = 1;
int limit = 4000000;
int sum = 0;
long startTime = System.currentTimeMillis();
while (fibonacci(i) < limit) {
if (fibonacci(i) % 2 == 0) {
sum += fibonacci(i);
}
i++;
}
long endTime = System.currentTimeMillis();
System.out.println(sum);
System.out.println((double)(endTime - startTime)/(double)1000 +"seconds");
System.out.println((endTime - startTime) +"ms");
}
public static int fibonacci(int n) {
if(n==1) {
return 1;
}else if (n==2) {
return 2;
}
else {
return fibonacci(n-1)+fibonacci(n-2);
}
}
}
Run time: 0.084seconds
solution: 4613732
[from Project Euler: https://projecteuler.net/problem=2]