私はこのコードを持っていますが、機能していません:
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ビットで、long64ビットは、すべてのint値の合計を含むことができます。
intなのでBigInteger、この例は必要ありません。