
//  HashTableDemo.java              CS 326 sample code for HW 4
//
//   Jeff Horn                              Winter 2007     2-20-07
//   Alex Anagnos                           Winter 2007     2-20-07 in class revamp
import java.applet.Applet;
import java.awt.Graphics;
import java.math.BigInteger;
import java.util.Hashtable;
import java.util.Random;

public class HashTableDemoGeneric extends Applet{
    private Hashtable<Integer,Boolean> archive = new Hashtable<Integer,Boolean>(1000000);
    private Random rand = new Random(1234567890);
    private int hits, misses, primes = 0;
    private int delay=10000;


    public HashTableDemoGeneric() {
        int temp;
        boolean is_prime;
        for(int i = 0; i < 1000000; i++) {
            temp = rand.nextInt(25000);
            if(  is_prime = archive.get(temp) == null) {
                misses++;
                is_prime = is_this_prime(temp);
                archive.put(temp, is_prime);
            } else hits++;
            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) {
        return new BigInteger(""+x).isProbablePrime(12);}
}