C# Language
BigInteger
Szukaj…
Uwagi
Kiedy użyć
Obiekty BigInteger
są ze swej natury bardzo obciążone dla pamięci RAM. W związku z tym należy ich używać tylko wtedy, gdy jest to absolutnie konieczne, tj. Dla liczb w prawdziwie astronomicznej skali.
Co więcej, wszystkie operacje arytmetyczne na tych obiektach są o rząd wielkości wolniejsze niż ich prymitywne odpowiedniki, problem ten pogłębia się wraz ze wzrostem liczby, ponieważ nie mają one ustalonego rozmiaru. Jest zatem możliwe, że nieuczciwy BigInteger
może spowodować awarię, zużywając całą dostępną pamięć RAM.
Alternatywy
Jeśli szybkość jest niezbędna dla twojego rozwiązania, bardziej efektywne może być samodzielne wdrożenie tej funkcji za pomocą klasy owijającej Byte[]
i przeciążanie niezbędnych operatorów. Wymaga to jednak znacznego wysiłku.
Oblicz pierwszą 1000-cyfrową liczbę Fibonacciego
Dołącz using System.Numerics
i dodaj odwołanie do System.Numerics
do projektu.
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);
}
}
}
Ten prosty algorytm iteruje liczby Fibonacciego, aż osiągnie długość co najmniej 1000 cyfr dziesiętnych, a następnie wydrukuje go. Ta wartość jest znacznie większa, niż może wytrzymać nawet bardzo ulong
.
Teoretycznie jedynym ograniczeniem klasy BigInteger
jest ilość pamięci RAM, którą może zużyć Twoja aplikacja.
Uwaga: BigInteger
jest dostępny tylko w .NET 4.0 i wyższych.