C# Language
BigInteger
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.