サーチ…


備考

いつ使うべきか

BigIntegerオブジェクトは非常にRAM上で非常に重いです。したがって、絶対に必要なとき、すなわち本当に天文学的な規模の数字の場合にのみ使用してください。

さらに、これらのオブジェクトに対するすべての算術演算は、それらの原始的な対応物よりも桁違いに遅く、この問題は、固定サイズではないので、数が増えるにつれてさらに複雑になります。したがって、不正なBigIntegerが使用可能なRAMをすべて消費することによってクラッシュする可能性があります。

代替案

速度があなたのソリューションにとって不可欠な場合は、 Byte[]をラップし、必要な演算子を自分でオーバーロードするクラスを使用してこの機能を実装する方が効率的です。しかし、これには多大な労力が必要です。

最初の1000桁のフィボナッチ数を計算する

using System.Numericsusing System.Numericsして、 System.Numericsへの参照をプロジェクトに追加します。

using System;
using System.Numerics;

namespace Euler_25
{
    class Program
    {
        static void Main(string[] args)
        {
            BigInteger l1 = 1;
            BigInteger l2 = 1;
            BigInteger current = l1 + l2;
            while (current.ToString().Length < 1000)
            {
                l2 = l1;
                l1 = current;
                current = l1 + l2;
            }
            Console.WriteLine(current);
        }
    }
}

この単純なアルゴリズムは、少なくとも1000桁の10進数に達するまでフィボナッチ数を反復し、それを印刷します。この値は、 ulongが保持できる値よりもかなり大きい値です。

理論的には、 BigIntegerクラスの唯一の制限は、アプリケーションが消費できるRAMの量です。

注意: BigIntegerは、.NET 4.0以上でのみ使用できます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow