Я пытаюсь использовать шаблоны, если они применимы. Я думаю, что это - вид печальных шаблонов разработки реализации разработчиков наблюдения в коде только ради него. Для правильной задачи, хотя, шаблоны разработки могут быть очень полезными и мощными.
Да, но только в .NET 4.0 - System.Numerics.BigInteger
.
Если вы можете использовать .NET 4.0, я бы пошел на это. В противном случае, я уверен, что есть сторонние библиотеки. Дайте мне знать, если хотите, чтобы я попытался их найти.
Если ваша цель - отработать навыки C # над задачами Эйлера, то использование библиотеки BigInt кажется бессмысленным. Если вам просто нужно значение 2 ^ 1000 как шаг к решению другой проблемы, то вот оно.
10715086071862673209484250490600018105614048117055
33607443750388370351051124936122493198378815695858
12759467291755314682518714528569231404359845775746
98574803934567774824230985421074605062371141877954
18215304647498358194126739876755916554394607706291
4571196477686542167660429831652624386837205668069376
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.
Вы можете использовать массив для хранения ваших цифр. Я знаю, что это беспорядочно, но по сути вам придется программировать умножение, как если бы вы делали это вручную, за исключением вашего кода.
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.
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...
Здесь есть класс, который называется BigInt
Очень полезно для этого типа проблем без .Net 4.0
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?
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