c# を使用して 2^1000 (2 の 1000 乗) を計算しようとしています。すべての場所に値が必要です。C# でこれを実現する方法がわからないので、しばらく頭を悩ませていました。
私が行方不明になっている、300桁以上の数字を格納するタイプがありますか? :)
ありがとう
c# を使用して 2^1000 (2 の 1000 乗) を計算しようとしています。すべての場所に値が必要です。C# でこれを実現する方法がわからないので、しばらく頭を悩ませていました。
私が行方不明になっている、300桁以上の数字を格納するタイプがありますか? :)
ありがとう
はい。ただし、.NET 4.0 のみSystem.Numerics.BigInteger
です。
.NET 4.0 を使用できる場合は、それを使用します。それ以外の場合は、サードパーティのライブラリが存在すると確信しています。探してほしい場合はお知らせください。
あなたの目標がオイラー問題で C# のスキルを行使することである場合、BigInt ライブラリを使用することは無意味に思えます。別の問題を解決するためのステップとして 2^1000 の値が必要な場合は、ここにあります。
10715086071862673209484250490600018105614048117055
33607443750388370351051124936122493198378815695858
12759467291755314682518714528569231404359845775746
98574803934567774824230985421074605062371141877954
18215304647498358194126739876755916554394607706291
4571196477686542167660429831652624386837205668069376
.net 4.0 (VS 2010) を使用している場合は System.Numerics.BigInteger
または、Web 上で優れたbigint実装を探してください。選択できるものがたくさんあります。
この StackOverflow questionも参照してください。
この質問はかなり古いことは知っていますが、まだグーグルによって発見されています。私は同じ問題を抱えていました。標準のデータ型では表現できない巨大な (または小さな) 数値を計算するライブラリを探していました。
そこで、 という新しいデータ型を作成しましたEDecimal
。このデータ型を使用すると、任意のサイズと精度の数値を計算できます。10桁でも100万でも構いません。
VS2008 では機能するため、F# を使用してテストすることもできますが、運用アプリケーションでは問題になります。
問題 #25、http://blogs.msdn.com/mpeg/archive/2009/04/01/solving-problems-in-c-and-f-part-2.aspxを見てください。使用できる可能性があります。
C# アプリケーションは F# クラスを呼び出すことができ、それらは連携して動作します。
IronRuby を使用できる場合 (現時点でどの程度使用できるかはわかりません)、暗黙的に Bignum に変換されます。例:
2 ** 1000
与えます:
107150860718626732094842504906000181056140...
配列を使用して数字を格納できます。面倒なことはわかっていますが、基本的には、コードを除いて、手動で行うのと同じように乗算をプログラムする必要があります。
ここには BigIntというクラスがあります
.Net 4.0 を使用せずにそのタイプの問題に非常に役立ちます
Java ランタイムへの参照を追加できます (C:\Windows\Microsoft.NET\Framework\v2.0.50727\vjslib.dll は私が取得したものusing java.math
です)。BigInteger
ええと...、2^0 は 1 番目のビット、2^1 は 2 番目のビット、...、2^4 は 5 番目のビットです....これには 1000 ビットが必要です。私はc#について何も知りませんが、ビット単位の表記は999個の0と1個の 1 であることを覚えてみてはどうでしょうか? そして、それに応じて使用してください。
その番号を何に使うつもりですか?