問題2

Fibonacci 数列は2項の和を次の新しい項とすることで作られる. 1と2で始めた場合最初の10項は次の通りになる.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89,...
この数列の4000000を越えない偶数の項の合計を求めよ.

http://projecteuler.net/index.php?section=problems&id=2

とりあえず安直に。

#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;
}

これで無事正解.

数学的な考察を行った上での計算はまた次に.