이 코드 조각이 있는데 작동하지 않습니다.
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum.add(BigInteger.valueOf(i));
}
}
합계 변수는 항상 0입니다. 내가 뭘 잘못하고 있습니까?
이 코드 조각이 있는데 작동하지 않습니다.
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum.add(BigInteger.valueOf(i));
}
}
합계 변수는 항상 0입니다. 내가 뭘 잘못하고 있습니까?
답변:
BigInteger
불변입니다. javadocs는 add () "[r] 값이 (this + val) 인 BigInteger를 반환합니다"라고 말합니다. 따라서 변경할 수 없으므로 메소드 sum
결과 add
를 sum
변수 에 다시 할당해야 합니다.
sum = sum.add(BigInteger.valueOf(i));
일부 int 값을 합산하므로 BigInteger를 사용할 필요가 없습니다. long
그것으로 충분합니다. 모든 int 값의 합을 포함 할 수있는 int
32 비트, long
64 비트입니다.
int
필요하지 않습니다BigInteger
.