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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow