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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow