@Override
    public long solve() {
        byte[] numbers = new byte[2000001];
        long sum = 2;
        int breakpoint = (int) Math.sqrt(20000000);
        for (int x = 3; x < numbers.length; x += 2) {
            if (numbers[x] == IS_PRIME) {
                sum += x;
                if (x < breakpoint) {
                    strikeOutMultiplesOf(numbers, x);
                }
            }
        }
        return sum;
    }