Even Fibonacci Numbers, Project Euler Problem 2
February 21, 2020
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の再帰関数は遅い