Files
JavaScript/Project-Euler/Problem025.js
Adhiraj e5677972de merge: added Problem 25 to Euler (#793)
* added Problem 25

* fixed alert

* fixed alert

* rewrote to improve runtime

* Update Problem025.js

* fixed typo

* added test file for Project-Euler/Problem025.js

* Update Project-Euler/test/Problem025.test.js

Co-authored-by: Rak Laptudirm <raklaptudirm@gmail.com>

* Update Problem025.test.js

Co-authored-by: Rak Laptudirm <raklaptudirm@gmail.com>
2021-10-21 23:08:30 +05:30

46 lines
992 B
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Problem 25 - 1000-digit Fibonacci number
*
* @see {@link https://projecteuler.net/problem=25}
*
* The Fibonacci sequence is defined by the recurrence relation:
*
* Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
*
* Hence the first 12 terms will be:
*
* F1 = 1
* F2 = 1
* F3 = 2
* F4 = 3
* F5 = 5
* F6 = 8
* F7 = 13
* F8 = 21
* F9 = 34
* F10 = 55
* F11 = 89
* F12 = 144
* The 12th term, F12, is the first term to contain three digits.
* What is the index of the first term in the Fibonacci sequence to contain 1000 digits?
*/
// brute force method
function fibonacciIndex(t = 1000) {
let digits = 10n**BigInt(t-1),
fib0 = BigInt(0),
fib1 = BigInt(1),
index = 1
while (fib1 < digits) { // using this to compare number of digits instead of .toString() significantly improved run time
const tempfib = fib1
fib1 = fib1 + fib0
fib0 = tempfib
index += 1
}
return(index)
}
export { fibonacciIndex }