JEB output Original source
// Decompiled by JEB v0.9.0 alpha

public static int[] eratosthenes(int arg12) {
    int v8 = 0;
    boolean[] v0 = new boolean[arg12 + 1];
    v0[0] = true;
    v0[1] = true;
    int v7 = ((int)Math.sqrt(((double)arg12)));
    int v3 = 2;
    while(v3 <= v7) {
        if(v0[v3] == false) {
            int v4 = v3 * v3;
            while(v4 <= arg12) {
                v0[v4] = true;
                v4 += v3;
            }

        }

        ++v3;
    }

    int v2 = 0;
    int v9 = v0.length;
    while(v8 < v9) {
        if(v0[v8] == false) {
            ++v2;
        }

        ++v8;
    }

    v4 = 0;
    int[] v6 = new int[v2];
    v3 = 0;
    while(v3 < v0.length) {
        if(v0[v3] == false) {
            v6[v4] = v3;
            ++v4;
        }

        ++v3;
    }

    return v6;
}
/**
 * Generate prime numbers using Eratosthenes' sieve.
 * @param n should be >= 2
 * @return an array of all primes below or equal than n
 */
public static int[] eratosthenes(int n) {
    boolean a[] = new boolean[n+1];
    a[0] = true;
    a[1] = true;
    
    int sqn = (int)Math.sqrt(n);
    for(int i = 2; i <= sqn; i++) {
        if(!a[i]) {
            int j = i*i;
            while(j <= n) {
                a[j] = true;
                j += i;
            }
        }
    }
    
    int cnt = 0;
    for(boolean b: a) {
        if(!b) {
            cnt++;
        }
    }
    
    int j = 0;
    int[] primes = new int[cnt];
    for(int i = 0; i < a.length; i++) {
        if(!a[i]) {
            primes[j++] = i;
        }
    }
    return primes;
}