-
Notifications
You must be signed in to change notification settings - Fork 0
/
Problem025.py
49 lines (40 loc) · 842 Bytes
/
Problem025.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn−1 + Fn−2, 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?
"""
from math import log10, floor
from time import time
def fibonacci():
"""
Infinite Generator of fibonacci sequence
"""
a, b = 1, 2
yield 1
yield a
yield b
while True:
a, b = b, a+b
yield b
num_digits = 1_000
start_time = time()
for i, term in enumerate(fibonacci()):
if floor(log10(term)) +1 == num_digits :
result = i + 1
break
final_time = time()
print(result)