Project Euler problem 2
Find the sum of the even Fibonacci numbers up to 4 million.
Solution
Calculating the Fibonacci numbers is straightforward and requires minimal memory, as we only have to keep track of the current number and the previous two numbers. Checking if a number is even is as simple as dividing by 2 and looking for a remainder of 0.
#include <stdlib.h>
#include <stdio.h>
int main() {
int sequence[] = {1, 1, 2};
int sum = 0;
while (sequence[2] < 4000000) {
// Check if current number is even
if (sequence[2] % 2 == 0) {
sum += sequence[2];
}
// Move all numbers back one space,
// then recalculate current number
sequence[0] = sequence[1];
sequence[1] = sequence[2];
sequence[2] = sequence[0] + sequence[1];
}
printf("%d\n", sum);
return EXIT_SUCCESS;
}
An alternative method, to remove the modulus operation, would be to check if the last digit is 0, 2, 4, 6 or 8. However, division by 2 is usually something that a compiler can optimise to something other than a DIV instruction.