// SI 413 Fall 2011
// Homework for Class 23

import java.util.Iterator;

public class Primes {
  public static void main(String[] args) {
    PGen pg = new PGen();
    Iterator<Integer> iter = pg.iterator();

    while (iter.hasNext()) {
      int p = iter.next();
      if (p > 100) break;
      else System.out.println(p);
    }

    // RE-WRITE THAT WHILE LOOP AS A FOR-EACH!
  }
}

class PIter implements Iterator<Integer> {
  // YOU WILL HAVE TO ADD SOME PRIVATE FIELD(S) TO KEEP TRACK
  // OF THE STATE OF THE ITERATOR!

  // This helper method determines whether a number is prime.
  // You're welcome.
  boolean isprime(int n) {
    for (int i = 2; i*i <= n; ++i)
      if (n % i == 0) return false;
    return true;
  }

  public Integer next() {
    // Should return the next prime number, starting from 2.
    // YOU HAVE TO WRITE THIS.
  }

  public boolean hasNext() {
    // Are there more primes????
  }

  // This is part of the interface but makes no sense for us.
  public void remove() { throw new UnsupportedOperationException(); }
}

// The Iterable interface means we can use this in a for-each loop
class PGen implements Iterable<Integer> {
  public Iterator<Integer> iterator() { return new PIter(); }
}