I am reading Cracking the Coding Interview and it has an example of finding prime number which I ran on JShell
boolean isPrime(int n) {
for (int i
Problem one, you should be using noneMatch (not anyMatch). Problem two, your range is off. Use rangeClosed (or add one to your end) which should be the square root of n (not just n) - and you started with 2 as an initial value in your first test. Also, you might as well make the method static. Like,
static boolean isPrimeStream(int n) {
return IntStream.rangeClosed(2, (int) Math.sqrt(n))
.noneMatch(i -> n % i == 0);
}
Also, we can improve your first example by handling 2 as a special case. That allows you to begin with three and increment by two skipping all even values.
static boolean isPrime(int n) {
if (n == 2) {
return true;
} else if (n == 1 || n % 2 == 0) {
return false;
}
for (int i = 3; i * i <= n; i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}