Поиск…


замечания

Когда использовать

Объекты BigInteger по своей природе очень тяжелы в ОЗУ. Следовательно, они должны использоваться только тогда, когда они абсолютно необходимы, т. Е. Для чисел в истинно астрономическом масштабе.

Кроме того, все арифметические операции над этими объектами на порядок медленнее, чем их примитивные аналоги, эта проблема еще более усугубляется по мере того, как число растет, поскольку они не имеют фиксированного размера. Поэтому вполне возможно, что мошенник BigInteger может вызвать сбой, потребляя всю доступную оперативную память.

альтернативы

Если скорость необходима для вашего решения, может быть более эффективно реализовать эту функциональность самостоятельно, используя класс, обертывающий Byte[] и перегружая необходимые операторы самостоятельно. Однако это требует значительных дополнительных усилий.

Вычислить первый 1000-значный номер Фибоначчи

Включите using System.Numerics и добавьте ссылку на System.Numerics в проект.

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);
        }
    }
}

Этот простой алгоритм выполняет итерацию по номерам Фибоначчи до тех пор, пока не достигнет одной длины не менее 1000 десятичных цифр, а затем распечатает ее. Это значение значительно больше, чем даже ulong .

Теоретически единственным пределом для класса BigInteger является объем оперативной памяти, которую может использовать ваше приложение.

Примечание. BigInteger доступен только в .NET 4.0 и выше.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow