C# Language
BigInteger
Zoeken…
Opmerkingen
Wanneer te gebruiken
BigInteger
objecten zijn van nature erg zwaar op RAM. Bijgevolg mogen ze alleen worden gebruikt wanneer absoluut noodzakelijk, dat wil zeggen voor getallen op een werkelijk astronomische schaal.
Verder zijn alle rekenkundige bewerkingen op deze objecten een orde van grootte langzamer dan hun primitieve tegenhangers, dit probleem wordt verder verergerd naarmate het aantal groeit omdat ze niet van een vaste grootte zijn. Het is daarom mogelijk dat een bedrieglijke BigInteger
een crash veroorzaakt door alle beschikbare RAM te consumeren.
alternatieven
Als snelheid essentieel is voor uw oplossing, kan het efficiënter zijn om deze functionaliteit zelf te implementeren met behulp van een klasse die een Byte[]
en zelf de benodigde operators overbelast. Dit vereist echter een aanzienlijke hoeveelheid extra inspanning.
Bereken het eerste 1000-cijferige Fibonacci-nummer
using System.Numerics
opnemen using System.Numerics
en voeg een verwijzing naar System.Numerics
aan het project.
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);
}
}
}
Dit eenvoudige algoritme doorloopt Fibonacci-getallen totdat het een lengte van ten minste 1000 decimalen bereikt en drukt het vervolgens af. Deze waarde is aanzienlijk groter dan zelfs een ulong
zou kunnen bevatten.
Theoretisch is de enige limiet voor de BigInteger
klasse de hoeveelheid RAM die uw toepassing kan verbruiken.
Opmerking: BigInteger
is alleen beschikbaar in .NET 4.0 en hoger.