埃拉托斯特尼筛法
埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。
//2000000以内的素数: public class Sieve { public static void main(String[] args) { int n = 2000000; long start = System.currentTimeMillis(); BitSet bitSet = new BitSet(n +1); int count = 0; int i; for (int j = 2; j <= n; j++) { bitSet.set(j); } i = 2; while (i * i <= n){//不大于根号n的数字 if (bitSet.get(i)){ System.out.println(i); count++; int k = 2 * i;//2*3 while ( k <= n){ bitSet.clear(k);//剔除 k += i; //k = k + i;所有素数的倍数 //k = 6 + 3 //k = 9 + 3 //k = 12 + 3 } } i++; } //System.out.println(count); while (i <= n){ if(bitSet.get(i)) count++; i++; } long end = System.currentTimeMillis(); //System.out.println(count); System.out.println((end - start) + "milliseconds"); } }