import java.util.BitSet;
public class Sieve
{
public static void main(String[] args){
int n = 20000000;
long start = System.currentTimeMillis();
BitSet b = new BitSet(n+1);
int i = 2;
for(i = 2; i <= n;i++)
{
b.set(i);
}
i = 2;
while(i*i <=n)
{
if(b.get(i))
{
//set current num's multiple num to false.
int k = 2 * i;
while(k <= n)
{
b.clear(k);
k +=i;
}
}
i++;
}
long end = System.currentTimeMillis();
System.out.println("count = " + b.cardinality());
System.out.println((end-start) +" milliseconds");
}
}
public class Sieve
{
public static void main(String[] args){
int n = 20000000;
long start = System.currentTimeMillis();
BitSet b = new BitSet(n+1);
int i = 2;
for(i = 2; i <= n;i++)
{
b.set(i);
}
i = 2;
while(i*i <=n)
{
if(b.get(i))
{
//set current num's multiple num to false.
int k = 2 * i;
while(k <= n)
{
b.clear(k);
k +=i;
}
}
i++;
}
long end = System.currentTimeMillis();
System.out.println("count = " + b.cardinality());
System.out.println((end-start) +" milliseconds");
}
}