The Fibonacci sequence is defined by the recurrence relation:
$$F_n = F_{n−1} + F_{n−2},\mbox{ where } F_1 = 1 \mbox{ 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, F12, is the first term to contain three digits.
What is the first term in the Fibonacci sequence to contain 1000 digits?
In [12]:
def fib():
a = 0
b = 1
yield b
while True:
a, b = b, a + b
yield b
In [13]:
n = 12
for at, f in enumerate(fib(), start=1):
print(at, f)
if at == n:
break
In [15]:
def at_least_n(n):
for at, f in enumerate(fib(), start=1):
l = len(str(f))
if l >= n:
return at, l , f
break
In [16]:
at_least_n(3)
Out[16]:
In [17]:
at_least_n(1000)
Out[17]: