import java.util.*;
public class BitSetTest {
public static void main(String[] args) {
long begin = System.currentTimeMillis();
BitSet sieve = new BitSet(54115297);
int size = sieve.size();
for (int i = 2; i < size; i++)
sieve.set(i);
int finalBit = (int) Math.sqrt(sieve.size());
//这个for if 写的太风骚
for (int i = 2; i < finalBit; i++)
if (sieve.get(i))
for (int j = 2 * i; j < size; j += i)
sieve.clear(j);
int counter = 0;
for (int i = 1; i < size; i++) {
if (sieve.get(i)) {
++counter;
}
//求 54115291是第几个质数
if (sieve.get(i) && i == 54115291) {
System.out.printf("%5d", i);
System.out.println();
long end = System.currentTimeMillis();
System.out.println("求第" + counter + "个质数耗时:" + (end - begin)
+ "毫秒");
}
}
}
}