001    package ps0.optional;
002    
003    public class Primes {
004        
005        private static void findPrimes(int nValues) {
006            boolean isPrime = true;
007            
008            for (int i = 2; i <= nValues; i++) {
009                isPrime = true;
010                
011                for (int j = 2; j < i; j++) {
012                    if (i % j == 0) {
013                        isPrime = false;
014                        break;
015                    }
016                }
017                
018                if (isPrime) {
019                    System.out.println(i);
020                }
021            }
022        }
023        
024        
025        private static void findPrimesFaster(int nValues) {
026            // PLACE YOUR IMPLEMENTATION HERE
027            System.out.println("The method findPrimesFaster has not been implemented");
028        }
029        
030        
031        private static void findPrimesEvenFaster(int nValues) {
032            // PLACE YOUR IMPLEMENTATION HERE
033            System.out.println("The method findPrimesEvenFaster has not been implemented");
034        }
035        
036        
037        
038        public static void main(String[] args) {
039            
040            // Find and print all primes between 0 and 50.
041            
042            System.out.println("Running method findPrimes:");
043            findPrimes(50);
044            
045            System.out.println("\nRunning method findPrimesFaster:");
046            findPrimesFaster(50);
047            
048            System.out.println("\nRunning method findPrimesEvenFaster:");
049            findPrimesEvenFaster(50);
050            
051            
052            
053            // Time how long it takes to find primes.
054            
055            long startTime = 0;
056            long endTime = 0;
057            
058            
059            System.out.print("\n\nTiming method findPrimes:");
060            startTime = System.currentTimeMillis();
061            findPrimes(20000);
062            endTime = System.currentTimeMillis();
063            System.out.println("  " + (endTime-startTime) + " milliseconds");
064            
065            System.out.print("\nTiming method findPrimesFaster:");
066            startTime = System.currentTimeMillis();
067            findPrimesFaster(20000);
068            endTime = System.currentTimeMillis();
069            System.out.println("  " + (endTime-startTime) + " milliseconds");
070            
071            System.out.print("\nTiming method findPrimesEvenFaster:");
072            startTime = System.currentTimeMillis();
073            findPrimesEvenFaster(20000);
074            endTime = System.currentTimeMillis();
075            System.out.println("  " + (endTime-startTime) + " milliseconds");
076            
077            
078            System.out.print("\n\nTiming method findPrimes:");
079            startTime = System.currentTimeMillis();
080            findPrimes(50000);
081            endTime = System.currentTimeMillis();
082            System.out.println("  " + (endTime-startTime) + " milliseconds");
083            
084            System.out.print("\nTiming method findPrimesFaster:");
085            startTime = System.currentTimeMillis();
086            findPrimesFaster(50000);
087            endTime = System.currentTimeMillis();
088            System.out.println("  " + (endTime-startTime) + " milliseconds");
089            
090            System.out.print("\nTiming method findPrimesEvenFaster:");
091            startTime = System.currentTimeMillis();
092            findPrimesEvenFaster(50000);
093            endTime = System.currentTimeMillis();
094            System.out.println("  " + (endTime-startTime) + " milliseconds");
095        }
096        
097    }