// Euler1 solution func Euler1(l int) int { sum := 0 for i := 1; i < l; i++ { if goutils.IsDiv(i, 3) || goutils.IsDiv(i, 5) { sum += i } } return sum }
// Euler2 solution func Euler2(l int) int { FibSeq := goutils.FibonacciLimit(l) var SumOfEvens int for i := 1; i < len(FibSeq); i++ { FibElem := FibSeq[i] if FibElem < l && goutils.IsDiv(FibElem, 2) { SumOfEvens += FibElem } } return SumOfEvens }
// TestIsDiv tests the IsDiv function func TestIsDiv(t *testing.T) { type IsDivTest struct { test [2]int // input expt bool // expected result } var tt = []IsDivTest{ {[2]int{4, 2}, true}, {[2]int{9, 2}, false}, {[2]int{10, 3}, false}, {[2]int{0, 2}, false}, {[2]int{2, 0}, false}, } for i := 0; i < len(tt); i++ { testIn := goutils.IsDiv(tt[i].test[0], tt[i].test[1]) testExp := tt[i].expt if testIn != testExp { t.Error("IsDiv test failed") } } }