« MultiMonitor TaskBar | トップページ | ThinkVantage 指紋認証ユーティリティー »

2008/10/03

Project Euler Problem2

第2問

Link:Problem2 - PukiWiki

/*
  Probrem2

  フィボナッチ数列の項は前の2つの項の和である。
  最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。
   1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
  数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。
*/

#include <stdio.h>

#define X1  1
#define X2  2
#define MAX 4000000

int judge_even(int num, int sum)
{
  if(num%2 == 0)
    sum += num;
  return sum;
}

int solve_probrem2(int x_prev1, int x_prev2)
{
  int sum = 0;
  sum = judge_even(x_prev2, sum);
  sum = judge_even(x_prev1, sum);

  while(1){
    int x   = x_prev1 + x_prev2;
    sum     = judge_even(x, sum);
    x_prev2 = x_prev1;
    x_prev1 = x;
    if(x > MAX) break;
  }

  return sum;
}

int main(void)
{
  int x_prev2 = X1;
  int x_prev1 = X2;
  int ans     = solve_probrem2(x_prev1, x_prev2);

  printf("===Problem2===\n");
  printf("Answer : %d\n", ans);
  
  return 0;
}

[実行結果]

$ ./problem2
===Problem2===
Answer : 4613732

|

« MultiMonitor TaskBar | トップページ | ThinkVantage 指紋認証ユーティリティー »

Project Euler」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/222903/42689663

この記事へのトラックバック一覧です: Project Euler Problem2:

« MultiMonitor TaskBar | トップページ | ThinkVantage 指紋認証ユーティリティー »