import java.util.*; //重构前:根据所给出的数字n,返回1-n之间的所有质数. class GeneratorPrimes { public static void main(String[] args) { long start = System.currentTimeMillis(); int[] a = PrimeGenerator.generate(10000000); long end = System.currentTimeMillis(); //System.out.println(Arrays.toString(a)); System.out.println(end - start); } public static int[] generate(int maxValue) { if (maxValue >= 2) { int s = maxValue + 1; boolean[] f = new boolean[s]; int i; for (i =0; i < s; i++) { f[i] = true; } f[0] = false; f[1] = false; int j; for (i = 2; i < Math.sqrt(s) + 1; i++) { //此处对标识为true的元素不再进行标记. if (f[i]) { for (j = 2 * i; j < s; j += i) { f[j] = false; } }
} int count = 0; for (i = 0; i < s; i++) { if (f[i]) { count++; } } int[] primes = new int[count]; for (i = 0, j = 0; i < s; i++) { if (f[i]) { primes[j++] = i; } }