C# Language
BigInteger
Sök…
Anmärkningar
När du ska använda
BigInteger
objekt är till sin natur mycket tunga på RAM. Följaktligen bör de endast användas när det är absolut nödvändigt, dvs för siffror i en verkligt astronomisk skala.
Vidare är alla aritmetiska operationer på dessa objekt en storleksordning långsammare än deras primitiva motsvarigheter, detta problem blir ytterligare sammansatt när antalet växer eftersom de inte har en fast storlek. Det är därför möjligt för en BigInteger
att orsaka en krasch genom att konsumera allt tillgängligt RAM.
alternativ
Om hastighet är avgörande för din lösning kan det vara mer effektivt att implementera den här funktionen själv genom att använda en klass som lägger in en Byte[]
och överbelaster de nödvändiga operatörerna själv. Detta kräver dock en betydande mängd extra ansträngning.
Beräkna det första 1000-siffriga Fibonacci-talet
Inkludera att using System.Numerics
och lägg till en referens till System.Numerics
till projektet.
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);
}
}
}
Denna enkla algoritm upprepas genom Fibonacci-siffror tills den når en minst 1000 decimaler i längd och skriver sedan ut den. Detta värde är betydligt större än till och med en ulong
kunde rymma.
Teoretiskt sett är den enda gränsen för klassen BigInteger
mängden RAM som din applikation kan konsumera.
Obs: BigInteger
är endast tillgängligt i .NET 4.0 och högre.