## The challenge

You will be given an integer array and your task is to return the sum of elements occupying prime-numbered indices.

The first element of the array is at index ``.

## The solution in Golang

Option 1:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````package solution import "math/big" func Solve(arr []int) int { c := 0 for i := 0; i < len(arr); i++ { n := arr[i] if big.NewInt(int64(i)).ProbablyPrime(0) { c += n } } return c } ``````

Option 2:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 `````` ``````package solution func Solve(arr []int) int { var sieve = make([]bool, len(arr)) count := 0 for i := 2; i < len(arr); i++ { if !sieve[i] { count += arr[i] for j := i * i; j < len(sieve); j += i { sieve[j] = true } } } return count } ``````

Option 3:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 `````` ``````package solution func Solve(arr []int) int { count := 0 sum := 0 for i := 2; i < len(arr); i++{ for c, n := i, 2; c > 0; n++{ if i % n == 0{ count++ c /= n n-- } } if count < 3 { sum += arr[i] } count = 0 } return sum } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 `````` ``````package solution_test import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) func dotest(arr []int, exp int) { var ans = Solve(arr) Expect(ans).To(Equal(exp)) } var _ = Describe("Example tests", func() { It("It should work for basic tests", func() { dotest([]int {}, 0) dotest([]int {1,2,3,4},7) dotest([]int {1,2,3,4,5,6}, 13) dotest([]int {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},47) }) }) ``````