Buscar..


Observaciones

Cuándo usar

BigInteger objetos BigInteger son, por su propia naturaleza, muy pesados ​​en la memoria RAM. En consecuencia, solo deben usarse cuando sea absolutamente necesario, es decir, para números en una escala verdaderamente astronómica.

Además de esto, todas las operaciones aritméticas en estos objetos son un orden de magnitud más lento que sus contrapartes primitivas, este problema se complica aún más a medida que el número crece, ya que no son de un tamaño fijo. Por lo tanto, es factible que un BigInteger deshonesto provoque un bloqueo al consumir toda la RAM disponible.

Alternativas

Si la velocidad es imperativa para su solución, puede ser más eficiente implementar esta funcionalidad utilizando una clase que contenga un Byte[] y sobrecargue los operadores necesarios. Sin embargo, esto requiere una cantidad significativa de esfuerzo extra.

Calcule el primer número de Fibonacci de 1,000 dígitos

Incluya using System.Numerics y agregue una referencia a System.Numerics al proyecto.

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

Este algoritmo simple se itera a través de los números de Fibonacci hasta que alcanza una longitud de al menos 1000 dígitos decimales, y luego lo imprime. Este valor es significativamente mayor de lo que incluso un ulong podría mantener.

Teóricamente, el único límite en la clase BigInteger es la cantidad de RAM que su aplicación puede consumir.

Nota: BigInteger solo está disponible en .NET 4.0 y superior.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow