"""Even Fibonacci numbers""" from euler import fibonacci #1. direct way print(sum(i for i in fibonacci(4000000) if i % 2 == 0)) #2. every third number is even
import argparse import math import euler if __name__ == "__main__": parser = argparse.ArgumentParser(description="Solves problem number 19 of Euler Project") parser.add_argument("--limit", type=int, default=1000) args = parser.parse_args() for pos, fib in enumerate(euler.fibonacci()): if fib >= 10 ** (args.limit - 1): print pos + 1 break
#!/usr/bin/env python # By considering the terms in the Fibonacci sequence whose values do # not exceed four million, find the sum of the even-valued terms. import euler MAX = 4000000 num = 0 for x in euler.fibonacci(): if x > MAX: break elif x % 2 == 0: num += x print num
# /usr/bin/env/python import time from euler import fibonacci_n, fibonacci from itertools import takewhile start = time.time() result = sum(x for x in fibonacci_n(4 * 10**6) if x % 2 == 0) time_spend = time.time() - start print "The sum is %s and take time is %f" % (result, time_spend) start = time.time() result = sum(x for x in takewhile(lambda x: x < 4 * 10**6, fibonacci()) if x % 2 == 0) # take while is helpful time_spend = time.time() - start print "The sum is %s and take time is %f" % (result, time_spend)
#!/usr/bin/env python # What is the first term in the Fibonacci sequence to contain 1000 # digits? import euler i = 0 for x in euler.fibonacci(): i+=1 if len(str(x)) == 1000: print i, x break
import math from euler import fibonacci print sum(fib for fib in fibonacci(4000000) if fib%2 == 0)
def testSuccess(self): expected = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89] actual = itertools.islice(euler.fibonacci(), 10) self.assertItemsEqual(expected, actual)
import math import itertools from euler import fibonacci def fib_term(n): phi = (1+math.sqrt(5))/2 return round(math.pow(phi, n)/math.sqrt(5)) for offset, num in enumerate(fibonacci()): length = len(str(num)) if length >= 1000: print offset+1 break
import euler import itertools fib = itertools.takewhile(lambda f: f < 4000000, euler.fibonacci()) print(sum(i for i in fib if i % 2 == 0))
"""1000-digit Fibonacci number""" from euler import fibonacci N = 1000 maximum = 10**1001 for idx, i in enumerate(fibonacci(maximum), start=2): if len(str(i)) == N: print '{}th term contains 1000 digits: \n{}'.format(idx, i) break
import time from euler import fibonacci start = time.time() result = 0 gen = fibonacci(10**1000) i = 0 while True: num = gen.next() i += 1 if len(str(num)) > 999: result = i break spend = time.time() - start print "The result is %s and take time is %f" % (result, spend)
def first_Fib_N_digits(N): for i, f in enumerate(fibonacci()): if f >= 10 ** (N - 1): return i + 1