java求质数(素数)的快速算法
public static List<Integer> ListPrime(int n) {/* * false为质数,true为合数 */boolean[] primeList = new boolean[n + 1];for (int i = 2; i <= n; i++) {if (!primeList[i]) {int j = i * i;if (j > n) // 所有合数都已被标记break;if (i > 2) {/* * 将所有能被此质数整除的奇数标记为合数 */while (j <= n) {primeList[j] = true;j = j + i + i;}} else {/* * 将所有大于2的偶数标记为合数 */while (j <= n) {primeList[j] = true;j = j + i;}}}}List<Integer> listPrime = new LinkedList<Integer>();if( n > 1 )listPrime.add(2);for (int i = 3; i <= n; i += 2) {if (!primeList[i]) {listPrime.add(i);}}System.out.println(listPrime.size());return listPrime;}