#!/usr/bin/java --source 11 import java.util.ArrayList; import java.util.Arrays; public final class primes { private static ArrayList GetPrimes(int n) { ArrayList aRes = new ArrayList(); int[] s; int i, j, m; int mroot, half; if (n < 2) return aRes; if (n == 2) { aRes.add(2); return aRes; } i = 0; s = new int[(n - 3 + 1) / 2]; for (j = 3; j <= n; j += 2) { s[i] = j; i++; } mroot = (int)Math.sqrt(n); half = s.length - 1; i = 0; m = 3; while (m <= mroot) { if (s[i] != 0) { for (j = (m * m - 3) / 2; j <= half; j += m) s[j] = 0; } i++; m = 2 * i + 3; } aRes.add(2); for(i = 0; i < s.length; i++) { j = s[i]; if (j != 0) aRes.add(j); } return aRes; } public static void main(String[] args) { ArrayList aRes; int i; for (i = 1; i <= 5; i++) { aRes = GetPrimes(10000000); System.out.println(aRes.size()); } } }