使用BitSet查找某个范围内的所有的素数的个数(摘自java核心技术.卷I)

来源:互联网 发布:数控车床圆锥编程 编辑:程序博客网 时间:2024/05/20 07:50
import java.util.*;/** * This program runs the Sieve of Erathostenes benchmark. It computes all primes up to 2,000,000. * @version 1.21 2004-08-03 * @author Cay Horstmann */public class Sieve{public static void main(String[] s)   { int n = 2000000;      long start = System.currentTimeMillis();      BitSet b=new BitSet(n+1);      int count=0;      int i;      for(i=2;i<=n;i++)      {      b.set(i);      }      i=2;      while(i*i<=n)      {      if(b.get(i))      {      count++;      int k=2*i;      while(k<=n)      {      b.clear(k);      k+=i;      }      }      i++;      }      while(i<=n)      {      if(b.get(i))count++;      i++;      }      long end = System.currentTimeMillis();      System.out.println(count + " primes");      System.out.println((end - start) + " milliseconds");   }}



原创粉丝点击