diff --git a/e2/e2.cs b/e2/e2.cs new file mode 100644 index 0000000..e65f1b2 --- /dev/null +++ b/e2/e2.cs @@ -0,0 +1,14 @@ +using System; + +public class E2 { + public static void Main() { + int sum, last, current, tmp; + last = 0; + sum = 0; + for (current = 1; current < 4000000; tmp = current, current += last, last = tmp) { + if (current % 2 == 0) + sum += current; + } + System.Console.WriteLine(sum); + } +} diff --git a/e2/e2.erl b/e2/e2.erl new file mode 100644 index 0000000..6ce213b --- /dev/null +++ b/e2/e2.erl @@ -0,0 +1,8 @@ +-module(e2). +-export([e2/0, fib_count/4]). + +fib_count(Last, Current, Max, Sum) when Current >= Max -> Sum; +fib_count(Last, Current, Max, Sum) when Current rem 2 == 0 -> fib_count(Current, Last + Current, Max, Sum + Current); +fib_count(Last, Current, Max, Sum) -> fib_count(Current, Last + Current, Max, Sum). + +e2() -> fib_count(0, 1, 4000000, 0). diff --git a/e2/e2.m b/e2/e2.m new file mode 100644 index 0000000..5b43f10 --- /dev/null +++ b/e2/e2.m @@ -0,0 +1 @@ +#include diff --git a/e2/e2.pl b/e2/e2.pl new file mode 100644 index 0000000..776780e --- /dev/null +++ b/e2/e2.pl @@ -0,0 +1,5 @@ +fib_count(Last, Current, Max, Sum, Sum) :- Current >= Max. +fib_count(Last, Current, Max, Acc, Sum) :- 0 is Current rem 2, Next is Last + Current, NewAcc is Acc + Current, fib_count(Current, Next, Max, NewAcc, Sum). +fib_count(Last, Current, Max, Acc, Sum) :- Next is Last + Current, fib_count(Current, Next, Max, Acc, Sum). + +e2(Result) :- fib_count(0, 1, 4000000, 0, Result).