Files
2020-10-10 18:06:37 +05:30

15 lines
589 B
JavaScript

const SQ5 = 5 ** .5; // Square root of 5
const PHI = (1 + SQ5) / 2; // definition of PHI
//theoretically it should take O(1) constant amount of time as long
// arithmetic calculations are considered to be in constant amount of time.
function EvenFibonacci(limit) {
const highestIndex = Math.floor(Math.log(limit * SQ5) / Math.log(PHI));
const n = Math.floor(highestIndex / 3);
return ((PHI ** (3 * n + 3) - 1) / (PHI ** 3 - 1)
- ((1 - PHI) ** (3 * n + 3) - 1) / ((1 - PHI) ** 3 - 1)) / SQ5;
}
console.log(EvenFibonacci(4e6));
// Sum of Even Fibonnaci upto 4 Million