diff --git a/src/bin/problem_2.rs b/src/bin/problem_2.rs new file mode 100644 index 0000000..68f9d4b --- /dev/null +++ b/src/bin/problem_2.rs @@ -0,0 +1,29 @@ +fn main() { + let result = fibonacci_even_sum(4_000_000); + println!("Result: {}", result); +} + +fn fibonacci_even_sum(limit: i64) -> i64 { + let mut previous = (1, 2); + let mut sum = 2; + while previous.0 + previous.1 < limit { + previous = (previous.1, previous.0 + previous.1); + + if previous.1 % 2 == 0 { + sum += previous.1; + } + } + + return sum; +} + +#[cfg(test)] +mod tests { + use crate::fibonacci_even_sum; + + #[test] + fn it_works() { + let result = fibonacci_even_sum(100); + assert_eq!(result, 44); + } +}