import java.util.ArrayList; import java.util.List; /** * This is a serial version of Sieve of Eratosthenes algorithm for generating * prime numbers. */ public class SieveSerial { public static void main(String[] args) { final int limit = 600000; System.out.println("SieveSerial.main: limit = " + limit); for (int iter = 0; iter < 8; iter++) { final long startTime = System.nanoTime(); final List localPrimes = new ArrayList(); localPrimes.add(2); for (int i = 3; i <= limit; i += 2) { checkPrime(i, localPrimes); } final long endTime = System.nanoTime(); final long execTime = (long) ((endTime - startTime) / 1e6); System.out.println("SieveSerial.main: num primes = " + localPrimes.size()); System.out.println("Iteration-" + iter + " Exec Time = " + execTime + " ms."); } } /** * Checks if the candidate is a prime, where the possible prime factors * are provided in the primesList */ private static void checkPrime(int candidate, List primesList) { boolean isPrime = true; //for (Iterator i = primesList.iterator(); i.hasNext(); ) { int s = primesList.size(); for (int i = 0; i < s; ++i) { Integer loopPrime = primesList.get(i); if (candidate % loopPrime.intValue() == 0) { isPrime = false; break; } } if (isPrime) { primesList.add(candidate); } } }