問題2
Fibonacci 数列は2項の和を次の新しい項とすることで作られる. 1と2で始めた場合最初の10項は次の通りになる.
http://projecteuler.net/index.php?section=problems&id=2
1, 2, 3, 5, 8, 13, 21, 34, 55, 89,...
この数列の4000000を越えない偶数の項の合計を求めよ.
とりあえず安直に。
#include <stdio.h> #include <stdlib.h> long solveVer00(long); int main(int argc, char **argv) { int version; if (argc == 1) { version = 0; } else { version = atoi(argv[1]); } switch (version) { case 0: printf("Solution: %ld\n", solveVer00(4000000)); break; default: break; } return 0; } long solveVer00(long upperBound) { long firstTerm, secondTerm, temp, sum; sum = 0; firstTerm = 1; secondTerm = 2; while (secondTerm <= upperBound) { #if DEBUG printf("%ld, %ld\n", firstTerm, secondTerm); #endif if ((secondTerm % 2) == 0) { sum += secondTerm; } temp = firstTerm + secondTerm; firstTerm = secondTerm; secondTerm = temp; } return sum; }
これで無事正解.
数学的な考察を行った上での計算はまた次に.