0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

超初心者が書く! Project Euler を Python で解いてみた! Problem2

Posted at

#problem2
学校でも勉強が進み、個人的にも少し勉強をしたので、今回は自分でコードを書いてみたいと思います。

##問題文

フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.

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

数列の項の値が400万以下の, 偶数値の項の総和を求めよ.

という問題です。
最初の2項が 1 , 1 で始まらないんですね...

フィボナッチ数列とは何ぞや? という方は こちらへ

##方針
フィボナッチの偶奇を判定していけばいいんですね! (そのまんまやんけ...)
a = b っていう文と、 b = a + b という文が出てきそうですね
とりあえず書いてみましょう。

##間違った解答&解説

Fib
a = 1 
b = 2
result = 0
while b < 4*10**6:
    if b%2 == 0:
        result += b
        a = b
        b = a + b
print(result)
4194302

あれ?答えが違う... (ちなみに答えは 4613732 です)

間違い探しをする前に初登場の関数の紹介です!

**ここを押すと while文 の説明がでるよ!** whileとは... while文は繰り返し実行をための文です。こんな書き方をします。 **while 繰り返しの条件:** 実際のコードで書くと
while
n = 0
while n < 5:
    print(n)
    n += 1
0
1
2
3
4
このように「繰り返しの条件」に当たる箇所が**真**(正しい)のときに繰り返してくれます。

ここから解説です。
前回もやった通り 1、2、3行目 で関数の宣言と代入を行っています。
4~8行目 で繰り返しの処理を行っています。
5行目 で偶数の判定、
6行目で result に偶数を合計していています。
7、8行目で肝心のフィボナッチ数列を作っているのですが、どうやらここに問題があるらしい...
初期の予定では

(a, b) = (1, 2) (2, 1+2) (3, 2+3) (5, 3+5) ...となる予定でしたが、実行してみると

(a, b) = (1, 2) (2, 2+2) (4, 4+4) (8, 8+8) ...と、上がっていってしまいました...

これは a = b を行った後に b = a + b を行っていため
             b = b + b をしているのとおんなじなんですね。(´・ω・`)

どうにかしてこの処理が b = a + b として成り立たせることができればよさそうです。

##解答&解説

Fibonacci_Sequence
a, b = 1, 2
result = 0
while b < 4*10**6:
    if b%2 == 0:
        result += b
    a, b = b, a + b
print(result)
4613732

ヤタ━─━─ヽ(´Д`)ノ─━─━!!!!

同時に変数の宣言と代入ができるのではないかとおもって直感で書いたらいけました! 正規の方法ですのでご安心を(笑)

しっかり a = b と b = a + b が行われていますね。

他の分は書き換えてないです。

##終わり
while文の使い方と代入の面白さが伝わっていれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?