マツケンのマインド

とある理系大学生のブログです。基本は勉強とつぶやきとまとめです。

プロジェクトオイラー 問題2

お久しぶりです!
プロジェクトオイラーの問題2をC言語で解きました!

問題はこちら↓

odz.sakura.ne.jp


アルゴリズムの段階でとても簡略化していることが多々あるので、なるべく丁寧に書きますが、おかしいところがあったら教えていただけると嬉しいです!

フィボナッチ数列は大学受験の時に何度か触れたことがあったので、考えやすかったです!ちなみに「数列」とは、数字をある規則性に沿って並べた数字の列のことです。

アルゴリズム

フィボナッチ数列の項は前の2つの項の和であるところを、3つの変数を使って前の2つの項とその和を表して、ひたすら足し合 わせていきます!

ソースコード

#include <stdio.h>
#include <time.h>
#define MAX 4000000

int main(void){
    int sum = 0;
    int a = 1;//二つ前の項を表す変数
    int b = 1;//一つ前の項を表す変数
    int c;//一つ前と、二つ前の項の和を表す変数
    clock_t start_clock, end_clock;

    start_clock = clock();

    while (1){
        c = a + b;
        if(c % 2 == 0) sum += c;
        a = b;
        b = c;
        if(a + b > MAX) break;
    }

    printf("求める数の和は%dです。\n", sum);

    end_clock = clock();

    printf("経過時間は%f秒\n", (double)(end_clock - start_clock) / CLOCKS_PER_SEC);

    return 0;
}

<実行結果>
解答は動かしてみてください!
経過時間は0.000000秒

クリア!!