Even Fibonacci Numbers, Project Euler Problem 2

Even Fibonacci Numbers, Project Euler Problem 2

February 21, 2020
Project Euler
Project Euler, Python

https://projecteuler.net/problem=2

みんな大好きフィボナッチ数。4,000,000以下で、かつ2で割り切れるフィボナッチ数を全部足せという問題。

フィボナッチ数の公式はこの間数学ガールで見たけど、自力で導けない公式は使わない自分ルールがあるので愚直に足し込む作戦でいく。

Solution 1 #


# https://projecteuler.net/problem=2

a, b = 1, 2
sum = 0

while b < 4_000_000:
	if b % 2 == 0:
		sum += b
	a, b = b, a + b

print(sum)

Solution 2 #

再帰関数 Ver. も書いた。Pythonistaだとあからさまに遅くなる。それも学び。


# https://projecteuler.net/problem=2

def fib(n: int) -> int:
	if n == 1:
		return 1
	elif n == 2:
		return 2
	else:
		return fib(n - 2) + fib(n - 1)

n = 1
fib_num = fib(n)
sum = 0

while fib_num < 4_000_000:
	if fib_num % 2 == 0:
		sum += fib_num
	n += 1
	fib_num = fib(n)

print(sum)

今日の学び(Python) #

  • 代入は複数同時にできる
  • スワップは a, b = b, a
  • 数値リテラルで _ をセパレーターにできる
  • Pythonistaの再帰関数は遅い