Вычисление очень больших целых чисел

Я пытаюсь использовать шаблоны, если они применимы. Я думаю, что это - вид печальных шаблонов разработки реализации разработчиков наблюдения в коде только ради него. Для правильной задачи, хотя, шаблоны разработки могут быть очень полезными и мощными.

6
задан lsalamon 9 October 2009 в 14:44
поделиться

9 ответов

Да, но только в .NET 4.0 - System.Numerics.BigInteger .

Если вы можете использовать .NET 4.0, я бы пошел на это. В противном случае, я уверен, что есть сторонние библиотеки. Дайте мне знать, если хотите, чтобы я попытался их найти.

18
ответ дан 8 December 2019 в 02:46
поделиться

Если ваша цель - отработать навыки C # над задачами Эйлера, то использование библиотеки BigInt кажется бессмысленным. Если вам просто нужно значение 2 ^ 1000 как шаг к решению другой проблемы, то вот оно.

10715086071862673209484250490600018105614048117055
33607443750388370351051124936122493198378815695858
12759467291755314682518714528569231404359845775746
98574803934567774824230985421074605062371141877954
18215304647498358194126739876755916554394607706291
4571196477686542167660429831652624386837205668069376
7
ответ дан 8 December 2019 в 02:46
поделиться

System.Numerics.BigInteger if you're in .net 4.0 (VS 2010)

Or, look for a good bigint implementation on the web - there are many to choose from.

See also this StackOverflow question.

4
ответ дан 8 December 2019 в 02:46
поделиться

Вы можете использовать массив для хранения ваших цифр. Я знаю, что это беспорядочно, но по сути вам придется программировать умножение, как если бы вы делали это вручную, за исключением вашего кода.

1
ответ дан 8 December 2019 в 02:46
поделиться

You could just use F# to test do it, as that will work in VS2008, but for a production application it would be a problem.

Look at Problem #25, http://blogs.msdn.com/mpeck/archive/2009/04/01/solving-problems-in-c-and-f-part-2.aspx, as it will show an approach that you may be able to use.

Your C# application can call an F# class, they work together.

1
ответ дан 8 December 2019 в 02:46
поделиться

If you can use IronRuby (not sure how usable that is at the moment), it has implicit conversion to Bignum. Example:

2 ** 1000 gives: 107150860718626732094842504906000181056140...

1
ответ дан 8 December 2019 в 02:46
поделиться

Здесь есть класс, который называется BigInt

Очень полезно для этого типа проблем без .Net 4.0

0
ответ дан 8 December 2019 в 02:46
поделиться

eh ... , 2^0 is 1st bit, 2^1 is 2nd bit , ... , 2^4 is 5th bit .... you need a 1000 bits for this . I do not know anything about c#, however, how about just remembering that the bitwise notation is a 999 0's with one 1 ? And use it accordingly.

What are you planning to use that number for?

0
ответ дан 8 December 2019 в 02:46
поделиться

You can add a reference to the Java runtime (C:\Windows\Microsoft.NET\Framework\v2.0.50727\vjslib.dll is what I've got) and using java.math, you get a BigInteger

0
ответ дан 8 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: