import java.util.*;
public class Sieve {
public static void main(String[] args) {
int n = 2000000;
long start = System.nanoTime();
BitSet bitSet = new BitSet(n+1);
int i;
for(i=2;i<=n;i++){
bitSet.set(i);
}
i=2;
while(i*i<=n){
if(bitSet.get(i)){
int k = i*i;
while(k<=n){
bitSet.clear(k);
k+=i;
}
}
i++;
}
long end = System.nanoTime();
System.out.println(bitSet.cardinality()+" primes");
System.out.println( (end-start)/1000000 + " milliseconds");
}
}
148933 primes
25 milliseconds
No comments:
Post a Comment