C# Language
BigInteger
Ricerca…
Osservazioni
Quando usare
BigInteger
oggetti BigInteger
sono per loro natura molto pesanti sulla RAM. Di conseguenza, dovrebbero essere usati solo quando assolutamente necessario, cioè per numeri su scala veramente astronomica.
Oltre a ciò, tutte le operazioni aritmetiche su questi oggetti sono di un ordine di grandezza più lento delle loro controparti primitive, questo problema viene ulteriormente aggravato man mano che il numero cresce man mano che non sono di dimensioni fisse. È quindi possibile che un BigInteger
possa causare un arresto anomalo consumando tutta la RAM disponibile.
alternative
Se la velocità è imperativa per la soluzione, potrebbe essere più efficiente implementare questa funzionalità da soli utilizzando una classe che include un Byte[]
e sovraccaricando gli operatori necessari da soli. Tuttavia, questo richiede un notevole sforzo extra.
Calcola il primo numero di Fibonacci a 1.000 cifre
Includere using System.Numerics
e aggiungere un riferimento a System.Numerics
al progetto.
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);
}
}
}
Questo semplice algoritmo esegue l'iterazione dei numeri di Fibonacci fino a raggiungere una cifra di almeno 1000 cifre decimali, quindi lo stampa. Questo valore è significativamente più grande di ulong
potrebbe mantenere un ulong
.
Teoricamente, l'unico limite della classe BigInteger
è la quantità di RAM che l'applicazione può consumare.
Nota: BigInteger
è disponibile solo in .NET 4.0 e versioni successive.