Write a class PrimeSequence that implements the Sequence interface of Worked Example 9.1, producing the sequence of prime numbers.

Complete the following files:

PrimeSequence.java

PrimeSequenceTester.java

Use the following files:

LastDigitDistribution.java

/**
   This class analyzes the distribution of the last digit of values
   from a sequence.
*/
public class LastDigitDistribution
{
   private int[] counters;

   /**
      Constructs a distribution whose counters are set to zero.
   */
   public LastDigitDistribution()
   {
      counters = new int[10];
   }

   /**
      Processes values from this sequence.
      @param seq the sequence from which to obtain the values
      @param valuesToProcess the number of values to process
   */
   public void process(Sequence seq, int valuesToProcess)
   {
      for (int i = 1; i <= valuesToProcess; i++)
      {
         int value = seq.next();
         int lastDigit = value % 10;
         counters[lastDigit]++;
      }
   }

   /**
      Displays the counter values of this distribution.
   */
   public void display()
   {
      for (int i = 0; i < counters.length; i++)
      {
         System.out.println(i + ": " + counters[i]);
      }
   }
}

PrimeSequenceDemo.java

public class PrimeSequenceDemo
{
   public static void main(String[] args)
   {
      LastDigitDistribution dist1 = new LastDigitDistribution();
      dist1.process(new PrimeSequence(), 1000);
      dist1.display();
      System.out.println();
   }
}

Sequence.java

public interface Sequence
{
   int next();
}