diff --git a/Project-Euler/Problem2.js b/Project-Euler/Problem2.js new file mode 100644 index 000000000..cc6f2cea0 --- /dev/null +++ b/Project-Euler/Problem2.js @@ -0,0 +1,16 @@ +const SQ5 = 5 ** 0.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