C# Language
BigInteger
수색…
비고
언제 사용 하는가?
BigInteger
객체는 본질적으로 RAM에서 매우 무겁습니다. 결과적으로, 절대적으로 필요한 경우, 즉 진정한 천문학적 규모의 숫자에만 사용해야합니다.
더 나아가,이 객체들에 대한 모든 산술 연산은 원시 객체보다 더 느리게 진행되며, 고정 된 크기가 아니기 때문에 숫자가 커짐에 따라이 문제는 더욱 복잡해집니다. 따라서, 가짜 BigInteger
가 사용 가능한 RAM을 모두 소비하여 충돌을 일으킬 가능성이 있습니다.
대안
속도가 솔루션에 반드시 필요한 경우 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
클래스의 유일한 제한은 응용 프로그램이 소비 할 수있는 RAM의 양입니다.
참고 : BigInteger
는 .NET 4.0 이상에서만 사용할 수 있습니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow