for (int j = 2; j <= arr[i] / 2; j++) {
if (arr[i] % j == 0) {
System.out.println("Number is not prime " + arr[i]);
break;
} else {
System.out.println("Number is prime " + arr[i]);
break;
}
}
Здесь вы повторяете только один раз и проверяете, делится ли данное число на 2 или нет (то есть это равно arr[i] % 2 == 0
). Чтобы проверить, является ли данное число простым или нет, вы должны проверить все числа от 2 до sqrt (val) .
Я рекомендую вам выбрать эту проверку отдельным методом.
import java.util.function.IntPredicate;
final IntPredicate isPrime = val -> {
if (val < 2)
return false;
for (int i = 2, sqrt = (int)Math.sqrt(val); i <= sqrt; i++)
if (val % i == 0)
return false;
return true;
};
А ваш код выглядит намного проще:
int[] arr = { 2, 5, 9, 6, 7, 13, 2, 4, 42, 8 };
for (int val : arr) {
if (isPrime.test(val))
System.out.println("Number is prime " + val);
else
System.out.println("Number is not prime " + val);
}