The Fibonacci sequence is defined by the recurrence relation:
$$ F_n = F_{n−1} + F_{n−2}, where F_1 = 1 and F_2 = 1.$$ Hence the first 12 terms will be:
$$ F_1 = 1 $$ $$ F_2 = 1 $$ $$ F_3 = 2 $$ $$ F_4 = 3 $$ $$ F_5 = 5 $$ $$ F_6 = 8 $$ $$ F_7 = 13 $$ $$ F_8 = 21 $$ $$ F_9 = 34 $$ $$ F_{10} = 55 $$ $$ F_{11} = 89 $$ $$ F_{12} = 144 $$
The 12th term, $$ F_{12} $$, is the first term to contain three digits.
What is the index of the first term in the Fibonacci sequence to contain 1000 digits?
A problem to introduce a new math concept.
Generate Fibonacci number and check if contains 1000 digits
def generate_fibonacci():
pre, nxt = 0, 1
while True:
pre, nxt = nxt, pre + nxt
yield pre
for i, f in enumerate(generate_fibonacci(), 1):
if i > 12:
break
print("{index}: {fib}".format(index=i, fib=f))
def solve(digit_len):
for i, f in enumerate(generate_fibonacci(), 1):
if len(str(f)) > digit_len-1:
return i
solve(3)
solve(1000)