## Tuesday, 24 January 2017

### Chapter 24 Exercise 14, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

24.14 (Prime number iterator) Define an iterator class named PrimeIterator for iterating prime numbers. The constructor takes an argument that specifies the limit of the maximum prime number. For example, new PrimeIterator(23302)
creates an iterator that iterates prime numbers less than or equal to 23302 . Write a test program that uses this iterator to display all prime numbers less than or equal to 100000 .

import java.util.Iterator;

public class Exercise14 {
public static void main(String[] args) {
Iterator<Integer> iterator = new PrimeIterator(1000);
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}

static class PrimeIterator implements java.util.Iterator<Integer> {
private int limit;
private int current = 1;

public PrimeIterator(int limit) {
this.limit = limit;
}

@Override
public Integer next() {
return current;
}

static boolean isPrime(int number) {
for (int divisor = 2; divisor < number; divisor++)
if (number % divisor == 0)
return false;
return true;
}

@Override
public boolean hasNext() {
current++;

while (true) {
if (isPrime(current))
break;
current++;
}

if (current >= limit)
return false;
else
return true;
}

@Override
public void remove() {
throw new UnsupportedOperationException
("Method not supported");
}
}

}