Very simple prime number test - I think I'm not understanding the for loop
for-loop, iterator, java, loops, primes
Solution
Your `for` loop has a little problem. It should be: -
for (i = 2; i < n; i++) // replace `i <= n` with `i < n`
Of course you don't want to check the remainder when `n` is divided by `n`. It will always give you `1`.
In fact, you can even reduce the number of iterations by changing the condition to: - `i <= n / 2`. Since `n` can't be divided by a number greater than `n / 2`, except when we consider `n`, which we don't have to consider at all.
So, you can change your `for` loop to: -
for (i = 2; i <= n / 2; i++)
Problem
I am practicing past exam papers for a basic java exam, and I am finding it difficult to make a for loop work for testing whether a number is prime. I don't want to complicate it by adding efficiency measures for larger numbers, just something that would at least work for 2 digit numbers. At the moment it always returns false even if n IS a prime number. I think my problem is that I am getting something wrong with the for loop itself and where to put the "return true;" and "return false;"... I'm sure it's a really basic mistake I'm making... ``` public boolean isPrime(int n) { int i; for (i = 2; i <= n; i++) { if (n % i == 0) { return false; } } return true; } ``` The reason I couldn't find help elsewhere on stackoverflow is because similar questions were asking for a more complicated implementation to have a more efficient way of doing it.