Eratosthenes筛选法求素数的算法

http://www.qqread.com/java/2009/01/r447790.html

 

public class Sieve{   public static void main(String[] args)   {   int max = 100; //假设求100以内的素数   boolean[] isPrime = new boolean[max+1];   for(int i=0; i<=max; i++)   isPrime[i]=true;   isPrime[0]=isPrime[1]=false; //1和0不是素数,所以将相应的   //isPrime元素设置为false   int n = (int)Math.ceil(Math.sqrt(max));   for(int i=0; i<=n; i++)   {   if(isPrime[i]) //素数的整数倍不是素数,从而筛选掉所有不是素数的数   {   for(int j=2*i; j<=max; j=j+i)   isPrime[j]=false;   }   }   int largest;   for(largest=max; !isPrime[largest]; largest--)   {   System.out.println(largest);   }   }   }

你可能感兴趣的:(ACM)