Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

//An immutable data type to systematically iterate over the first n primes. publ

ID: 3730624 • Letter: #

Question

//An immutable data type to systematically iterate over the first n primes. public class Primes implements Iterable Integer> private final int n; I/ need first n primes // Construct an iterable Primes object given the number of primes needed public Primes (int n) // A PrimesIterator object. public Iterator iterator) Primes iterator. private class PrimesIterator implements Iterator private int count ; /I number of primes returned private int p = 2; /I current prime // Are there anymore primes left to be iterated? public boolean hasNext) f // The next prime. public Integer next)t // Remove is not supported. public void remove) // nothing to do // Is x (>= 2) prime ? private boolean isPrime (int x) for (int i = 2; 1

Explanation / Answer

Below is your code: -

//An immutable data type to systematically iterate over the first n primes.

public class Primes implements Iterable<Integer> {

private final int n; // need first n primes

// Construct an iterable Primes object given the number of primes needed.

public Primes(int n) {

this.n = n;

}

// A PrimesIterator object.

public Iterator<Integer> iterator() {

return new PrimesIterator();

}

// Primes iterator.

private class PrimesIterator implements Iterator<Integer> {

private int count = 0; // number of primes returned

private int p = 2; // current prime

// Are there anymore primes left to be iterated?

public boolean hasNext() {

return count < n;

}

// The next prime.

public Integer next() {

while (!isPrime(p)) {

p = p + 1;

}

count = count + 1;

p = p + 1;

return p - 1;

}

// Remove is not supported.

public void remove() {

// nothing to do

}

// Is x (>= 2) prime?

private boolean isPrime(int x) {

for (int i = 2; i <= x / i; i++) {

if (x % i == 0) {

return false;

}

}

return true;

}

}

// Test client. [DO NOt EDIT]

public static void main(String[] args) {

int n = Integer.parseInt(args[0]);

for (int i : new Primes(n)) {

System.out.println(i);

}

}

}