Для небольшого проекта (проблема 10 Project Euler) я попытался подвести все простые числа ниже 2 миллионов. Поэтому я использовал метод грубой силы и повторял от 0 до 2'000'000 и проверял, является ли число простым. Если я добавил его к сумме:
private int sum = 0;
private void calculate() {
for (int i = 0; i < 2000000; i++) {
if (i.isPrime()) {
sum = sum + i;
}
}
sysout(sum)
}
Результат этого расчета равен 1179908154, но это неверно. Поэтому я изменил int на BigInteger, и теперь я получу правильную сумму 142913828922. Очевидно, диапазон int был переполнен. Но почему Java не может мне это сказать? (например, за исключением)