私はこのコードを持っていますが、機能していません:
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum.add(BigInteger.valueOf(i));
}
}
sum変数は常に0です。何が問題なのですか?
私はこのコードを持っていますが、機能していません:
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum.add(BigInteger.valueOf(i));
}
}
sum変数は常に0です。何が問題なのですか?
回答:
BigInteger
不変です。javadocsによると、add()は、[(r]は(this + val)の値を持つBigIntegerを返します。)したがって、を変更することはできません。メソッドsum
の結果add
をsum
変数に再割り当てする必要があります。
sum = sum.add(BigInteger.valueOf(i));
いくつかのint値を合計しているため、BigIntegerを使用する必要はありません。long
それで十分です。int
は32ビットで、long
64ビットは、すべてのint値の合計を含むことができます。
int
なのでBigInteger
、この例は必要ありません。