Mehrdimensionales Array - Primzahltest

@Landei , auf den ersten Blick performancetechnisch unterirdisch.
Wenn man aber Set und List jeweils in ein boolean[] tauscht, dann sieht es wieder ganz anders aus.

Ca. 33% Performanter als das letzte von CyborgBeta.

Hier die Version mit dem boolean array.

        boolean[] crossed = new boolean[upperBound];
        boolean[] primes = new boolean[upperBound];
        if (upperBound < 2) return primes;
        primes[2]=true;
        if (upperBound < 3) return primes;
        primes[3]=true;
        if (upperBound < 5) return primes;
        primes[5]=true;
        if (upperBound < 7) return primes;
        primes[7]=true;
        for (int p = 11; p <= upperBound; p += 2) {
            if (p % 3 > 0 && p % 5 > 0 && p % 7 > 0 && !crossed[p]) {
                primes[p]=true;
                if (p < 46340) {  //int - Überlauf bei Multiplikation verhindern
                    for (int k = p * p; k < upperBound; k += 2 * p) {
                        crossed[k]=true;
                    }
                }
            }
        }
        return primes;
    }```

Math.sqrt(value) ist ein Problem, welches bei mir vorkommt.