Suche…


Bemerkungen

Wann verwenden?

BigInteger Objekte haben naturgemäß sehr viel RAM. Daher sollten sie nur verwendet werden, wenn es absolut notwendig ist, dh für Zahlen in wahrhaft astronomischem Maßstab.

Darüber hinaus sind alle arithmetischen Operationen an diesen Objekten um eine Größenordnung langsamer als ihre primitiven Pendants. Dieses Problem wird umso größer, je größer die Anzahl ist, da sie keine feste Größe haben. Es ist daher möglich, dass ein gefährlicher BigInteger einen Absturz verursacht, indem er den gesamten verfügbaren RAM verbraucht.

Alternativen

Wenn Geschwindigkeit für Ihre Lösung unerlässlich ist, ist es möglicherweise effizienter, diese Funktionalität selbst zu implementieren, indem Sie eine Klasse verwenden, die ein Byte[] und die erforderlichen Operatoren selbst überlastet. Dies erfordert jedoch einen erheblichen zusätzlichen Aufwand.

Berechnen Sie die erste 1.000-stellige Fibonacci-Zahl

Include using System.Numerics und Hinzufügen eines Verweises auf System.Numerics zum Projekt.

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);
        }
    }
}

Dieser einfache Algorithmus durchläuft die Fibonacci-Zahlen bis zu einer Länge von mindestens 1000 Dezimalstellen und gibt sie dann aus. Dieser Wert ist wesentlich größer als selbst ein ulong halten könnte.

Theoretisch ist die einzige Beschränkung für die BigInteger Klasse die Menge an RAM, die Ihre Anwendung BigInteger kann.

Hinweis: BigInteger ist nur in .NET 4.0 und höher verfügbar.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow