// 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;
} |