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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow