public static ArrayList<Integer> primeNumbers(int n) {
if (n < 2) return null;
ArrayList<Integer> list = new ArrayList<Integer>();
boolean[] prime = new boolean[n + 1];
for (int i = 2; i < n + 1; i++) {
prime[i] = true;
}
for (int i = 2; i < Math.sqrt(n);i++) {
if (prime[i]) {
for (int j = i * i; j <= n; j += i) {
prime[j] = false;
}
}
}
for (int i = 2; i <= n; i++) {
if (prime[i] == true) {
list.add(i);
}
}
return list;
}
Detailed introduction of this method: http://en.wikipedia.org/wiki/Sieve_of_eratosthenes