-1

BigInteger、BigDecimalなどを使用せずに、大きな数に関するプロジェクトを作成しています。すべての基本を実行できましたが、階乗をカウントする機能を追加する必要があります。私のBigNumberはデータをint[]として保存します。

これはBigIntegerを使用したサンプルソリューションですが、実際の数値がないと使用できません。

    BigInteger n = BigInteger.ONE;
    for (int i=1; i<=20; i++) {
        n = n.multiply(BigInteger.valueOf(i));
        System.out.println(i + "! = " + n);
    }

では、値を数える方法は?最後から最初にintを追加し、10を10倍し、100を100倍にするなどして、それを長く保存しますか?

BigIntegerのソース:http: //developer.classpath.org/doc/java/math/BigInteger-source.html

4

1 に答える 1

0

では、値を数える方法は?最後から最初に int を追加し、10 を 10 倍し、100 を 100 倍するなどして、長く保存します。

として保存することはあなたの意図ではないと思いlongます。値が よりも大きくなるとどうなりLong.MAX_VALUEますか?

nが の場合BigInteger、オブジェクトn.multiply(BigInteger.valueOf(i));を返す必要がありBigIntegerます。メソッドは、2 つのオブジェクトを に変換せずにmultiply乗算を行う方法を知っている必要があります。これを行う 1 つの方法は、小学校で学んだ乗算と桁上げのアルゴリズムを使用して各桁をループすることです。値が天文学的である場合、これはかなり遅くなりますが、理解しやすく実装しやすいという利点があります。BigIntegerlong

于 2010-08-04T16:52:25.270 に答える