Project Eulerの問題#2を実行しようとしています。それは次のとおりです。
フィボナッチ数列の新しい各項は、前の 2 つの項を追加することによって生成されます。1 と 2 から始めると、最初の 10 項は次のようになります。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
値が 400 万を超えないフィボナッチ数列の項を考慮して、偶数値の項の合計を見つけます。
ただし、次のコードを 4000000 で使用すると、ターミナル ウィンドウがハングします。小さい数値でも問題なく動作します。このコードには本当に効率が悪いものがあるのでしょうか?
n = int(raw_input("Enter the start number: "))
def fib_generator():
a, b = 0, 1
yield 0
while True:
a, b = b, a + b
yield a
def even_sum(fib_seq):
seq = []
seq = [next(fib_seq) for number in range(n)]
seq = [number for number in seq if number % 2 == 0]
return sum(seq)
def start():
fib = fib_generator()
even_sum = even_sum(fib)
print even_sum
start()