Prime Number Sieving Algorithm
I'd rename Numbers to isPrime
num is not needed. maxNumber serves the same purpose.
Termination condition in the elimination loops must be &lt;, not &lt;=. With an unfortunate value of maxNumber, the latter would make an illegal access.
An inner elimination loop can be shortened to

for (int b = a; b*a &lt;= num; ) {
    isPrime[b*a] = false;
    b += 2;
    if (b%3 == 0)
        b+=2;
}

It is worth noticing that i+=6, j+=6 serves the same purpose as if (b%3 == 0) b+=2. Better be unified (it looks like an expensive modulo operator can be avoided). I'd seriously consider splitting each loop into two independent loops with increment 6.
Finally, the implementation is not slow (other than using %), but it is not any faster than a standard sieve.