Project Euler Problem 025
http://projecteuler.net/index.php?section=problems&id=25
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2025
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 first term in the Fibonacci sequence to contain 1000 digits?
フィボナッチ数で1000桁を超える最初の数の項数は?
なんとなく itertools.takewhile を使ってみた、これは条件に一致する間のイテレータを返す。
import math import itertools import datetime def fib(): yield 1 a = 0 b = 1 while True: val = a + b a = b b = val yield val def euler025(): it = itertools.takewhile(lambda a: a < 10 ** 999, fib()) print sum([1 for i in it]) + 1 begin = datetime.datetime.now() euler025() end = datetime.datetime.now() print end - begin
答え: 4782
実行時間: 0.005882秒くらい