6

たとえば100の乗算など、32文字を超える2つの非常に大きな数を乗算する方法!122で!または分割統治の助けを借りて11^200で22^122、JavaコードまたはC#コードを持っているボディはありますか?

4

4 に答える 4

3

おそらくjava.math.BigIntegerを使用する必要があります。これにより、2^32 または 2^64 をはるかに超える整数値の表現が可能になります。BigInteger の値は基本的に、プログラムで使用できるメモリの量によってのみ制限されます。つまり、32 ビット システムでは最大 4 GB、64 ビット システムではほぼ使用可能な物理メモリと仮想メモリです。

import java.math.BigInteger;

class Foo
{
    public static void main(String args[])
    {
        BigInteger bigInteger100Fact = bigFactorial(BigInteger("100")); //where bigFactorial is a user-defined function to calculate a factorial
        BigInteger bigIntegerBar = new BigInteger("12390347425734985347537986930458903458");

        BigInteger product = bigIntegerFact.multiply(bigIntegerBar);
    }
}

編集:必要な場合は、 BigInteger階乗関数を次に示します

于 2010-01-03T23:05:32.150 に答える
2

KaratsubaとToom-Cookを使用するjava.lang.BigIntegerのパッチバージョンは次のとおりです。

そして、 Schönhage-Strassenを使用してBigIntegerを乗算できるJavaクラスは次のとおりです。

于 2011-11-06T00:48:33.587 に答える
1

ここにいくつかの整数乗算アルゴリズムがあります

これが数字のクラスライブラリです

これには、大きな整数を乗算するためのKaratsubaおよびSchonhage-Strassenアルゴリズムが含まれています。

于 2010-01-03T22:53:57.617 に答える
0

楽しみのために、配列を使用してそれを実現するものを自分で作成しました。ただし、JavaのBigIntegerクラスも同じことを行うと思います。

これはあなたに役立つかもしれないC#の例です。

于 2010-01-03T22:53:47.883 に答える