forked from TheAlgorithms/JavaScript
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProblem002.js
More file actions
Latest commit
14 lines (12 loc) · 644 Bytes
/
Copy pathProblem002.js
File metadata and controls
14 lines (12 loc) · 644 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// https://projecteuler.net/problem=2
constSQ5=5**0.5// Square root of 5
constPHI=(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
exportconstEvenFibonacci=(limit)=>{
if(limit<1)thrownewError('Fibonacci sequence limit can\'t be less than 1')
consthighestIndex=Math.floor(Math.log(limit*SQ5)/Math.log(PHI))
constn=Math.floor(highestIndex/3)
returnMath.floor(((PHI**(3*n+3)-1)/(PHI**3-1)-
((1-PHI)**(3*n+3)-1)/((1-PHI)**3-1))/SQ5)
}