2

こんにちは、BigInt に操作を適用する必要があるアルゴリズムがあります。

BigInt は、次のような Maths クラスを使用して操作できることを理解しています。

import java.math.*;

BigInteger a;
BigInteger b = BigInteger.ZERO;
BigInteger c = BigInteger.ONE;
BigInteger d = new BigInteger ("3");
BigInteger e = BigInteger.valueOf(5);

a.multiply(b);
a.add(b);
a.substract(b);
a.divide(b);

しばらく条件を超えて適用できるようにする必要があります。

while (a > 0) {

これにより、「二項演算子 '>' の不適切なオペランド型、最初の型: java.math.BigInteger、2 番目の型: int.

また、モジュロ (%) 演算子を BigInteger に適用できるようにする必要もあります。

b = a % c;

誰でもこれを行う方法を提案できますか?

解決策がない場合は、reduce 関数を使用して BigInteger を一意の Long に何らかの方法で操作する必要があります (これは理想とはほど遠いものです)。

シルバーズ。

4

2 に答える 2

7

比較するBigIntegerには、 を使用しますBigInteger.compareTo

while(a.compareTo(BigInteger.ZERO) > 0)
    //...

また、モジュロ ( %) には、 を使用しますBigInteger.mod

BigInteger blah = a.mod(b);
于 2013-03-01T16:01:57.993 に答える
0

BigIntegers を比較するには を使用できますがcompareTo、0 と比較する特殊なケースでは、signumメソッドもジョブを実行します (そして、少し高速になる可能性があります)。特定の除算の剰余を取るには、 メソッドmod(ここではより適切なオプション) を使用するかdivideAndRemainder、除算の結果と剰余の両方を含む配列を返すメソッドを使用できます。

于 2013-03-01T16:00:18.677 に答える