【Project Euler】No2:Even Fibonacci numbers 解答例【Python】

【Project Euler】No2:Even Fibonacci numbers 解答例【Python】

はじめに

コジマです。

https://projecteuler.net/
の2問目を解いていきます。

フィボナッチ数列なんですけど、以前触れています。
初めてLTしてきました。

懇切丁寧な解説はないのでご承知おきください。

問題

問題2

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1,2,3,5,8,13,21,34,55,89,…

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

和訳(意訳)
フィボナッチ数列の新しい項は前2つの項の和で生成される。1、2から始め、最初の10項は以下のようになる:1,2,3,5,8,13,21,34,55,89,…4,000,000を超えないフィボナッチ数列の項を考える場合、偶数の項の総和を求めよ。

偶数の項なのか偶数番目の項なのか和訳するときに迷ってしまった…

解答例

フィボナッチ数列の漸化式ではなくて、一般項を使ってみました。
再帰処理が要らなくなるからロジック考えなくていいよなという打算ですw

# 毎回これだけは入れることにしとく
import numpy as np
import math

# 初期化
n = 1
# n番目の項を求める(一般項)
r5 = math.sqrt(5) # math.sqrt(5)って書くのだるい
an = 0 # 初期化

# この問題の閾値
an_max = 4000000

# 得た値の中で偶数のものはここにいれてく
fib_even = []

# 数列を格納していく
while an < an_max:
    # anを求める(フィボナッチの一般項)
    # anが整数になるのは自明としちゃう
    an = int( (1.0 / r5) * ( ((1.0 + r5)/2.0)**n - ((1.0 - r5)/2.0)**n) )

    # 偶数の項がほしい
    if an % 2  == 0:
        fib_even.append(an)
    # 項を進める
    n+=1
    
# 答えを求める
print("答えは :{}".format(sum(fib_even)))

さいごに

解答はgithubにも上げています。
https://github.com/kojimanotech/project_euler/blob/master/0002_Even_Fibonacci_numbers.ipynb

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

もっと学びたい人はこちら

Python、機械学習をもっと学びたいという人のためにおすすめのUdemy講座を紹介いたします!

Pythonの基本文法を押さえたい方はこちらの動画がおすすめです。
エンジニアになりたいと思って駆け出した方がPythonを選んだときはこの講座から始めるとよいと思います。
Python 3 エンジニア認定基礎試験の対策にもなります。
はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス

プログラムの基礎が分かる方で機械学習に興味がある方はこちらがおすすめです。
SIGNATEという日本版Kaggleのサービスを実際に使用してハンズオン形式でデータ分析・機械学習を学ぶことができます。
もちろんこの動画だけで特級のデータサイエンティストになれるわけではないですが、機械学習の門を叩くにはとても良い講座だと思います。
【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門

Pythonのライブラリで必ず押さえておきたいのがNumpy, Pandas, Matplotlibの3つ。
この3つを網羅的に学ぶことができる講座です。
英語の講座ですが、わかりやすい英語ですし、ソースコードメインで解説しているので
ソースコードを一緒に手を動かしながら学べば十分理解することができます。
機械学習を使わない人にもおすすめの講座です。
2021 NumPy, Pandas and Matplotlib A-Z™: for Machine Learning

気になった人はぜひ見てみてくださいね!

以上、コジマでした。


Pythonカテゴリの最新記事