import java.util.stream.IntStream;
public final class PrimeCalculator {
public int nth(int nth) {
if (nth < 1) {
throw new IllegalArgumentException();
}
int primesFound = 0;
int possiblePrime = 1;
while (primesFound < nth) {
possiblePrime++;
if (isPrime(possiblePrime)) {
primesFound++;
}
}
return possiblePrime;
}
private boolean isPrime(int n) {
if (n == 1) {
return false;
}
if (n == 2) {
return true;
}
boolean divisible = IntStream
.rangeClosed(2, (int) Math.ceil(Math.sqrt(n)))
.anyMatch((int i) -> n % i == 0);
return !divisible;
}
}