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");
}
}
使用BitSet查找某个范围内的所有的素数的个数(摘自java核心技术.卷I)
最新推荐文章于 2020-09-08 16:51:06 发布