BigInteger
является неизменным. В javadocs указано, что add () «[r] eturns a BigInteger, значение которого равно (this + val)». Следовательно, вы не можете изменить sum
, вам необходимо переназначить результат метода add
переменной sum
.
sum = sum.add(BigInteger.valueOf(i));
sum = sum.add(BigInteger.valueOf(i))
BigInteger
класс неизменен, поэтому вы не можете изменить его состояние. Таким образом, вызов «add» создает новый BigInteger
, а не изменяет текущий.
Другие ответы отметили это; BigInteger неизменен. Вот небольшое изменение, чтобы заставить этот код работать:
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum = sum.add(BigInteger.valueOf(i));
}
}
BigInteger - неизменяемый класс. Поэтому всякий раз, когда вы выполняете какие-либо арифметические операции, вы должны переназначить вывод переменной.