//  HashTableDemo.java              CS 326 sample code for HW 4
//
//   Jeff Horn                              Winter 2007     2-20-07


import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import java.awt.Component;
import java.awt.Panel;
import java.math.*;


public class HashTableDemo2 extends Applet

	{

		private Hashtable archive = new Hashtable(0);

		private Random rand = new Random(1234567890);

		private int hits, misses, primes = 0;


        public HashTableDemo2()
             {
				 int temp;
				 boolean is_prime;

				 for(int i = 0; i < 1000000; i++)
				     {
						 temp = rand.nextInt(25000);

						 if(false) //archive.containsKey(new Integer(temp)))
						     {
								 hits++;
								 is_prime = ((Boolean) archive.get(new Integer(temp))).booleanValue();
							 }
						    else
						    {
							   misses++;
							   is_prime = is_this_prime(temp);
//							   archive.put(new Integer(temp), new Boolean(is_prime));
						    }

                         if(is_prime) primes++;
					 }

			 }



	    public void paint(Graphics g)
	          {
				 g.drawString("Archive Size: " + archive.size(), 100,100);
                 g.drawString("Archive Hits: " + hits, 100,130);
                 g.drawString("Archive Misses: " + misses, 100,160);
                 g.drawString("Archive Primes: " + primes, 100,190);

	           }

	    public boolean is_this_prime(int x)
	          {
				 BigInteger bX = new BigInteger(""+x);
				 return bX.isProbablePrime(100);  //  12 is the certainty value

	           }


}

