6

c# を使用して 2^1000 (2 の 1000 乗) を計算しようとしています。すべての場所に値が必要です。C# でこれを実現する方法がわからないので、しばらく頭を悩ませていました。

私が行方不明になっている、300桁以上の数字を格納するタイプがありますか? :)

ありがとう

4

10 に答える 10

18

はい。ただし、.NET 4.0 のみSystem.Numerics.BigIntegerです。

.NET 4.0 を使用できる場合は、それを使用します。それ以外の場合は、サードパーティのライブラリが存在すると確信しています。探してほしい場合はお知らせください。

于 2009-10-09T14:37:03.467 に答える
7

あなたの目標がオイラー問題で C# のスキルを行使することである場合、BigInt ライブラリを使用することは無意味に思えます。別の問題を解決するためのステップとして 2^1000 の値が必要な場合は、ここにあります。

10715086071862673209484250490600018105614048117055
33607443750388370351051124936122493198378815695858
12759467291755314682518714528569231404359845775746
98574803934567774824230985421074605062371141877954
18215304647498358194126739876755916554394607706291
4571196477686542167660429831652624386837205668069376
于 2009-10-09T16:02:37.193 に答える
4

.net 4.0 (VS 2010) を使用している場合は System.Numerics.BigInteger

または、Web 上で優れたbigint実装を探してください。選択できるものがたくさんあります。

この StackOverflow questionも参照してください。

于 2009-10-09T14:38:08.200 に答える
1

この質問はかなり古いことは知っていますが、まだグーグルによって発見されています。私は同じ問題を抱えていました。標準のデータ型では表現できない巨大な (または小さな) 数値を計算するライブラリを探していました。

そこで、 という新しいデータ型を作成しましたEDecimal。このデータ型を使用すると、任意のサイズと精度の数値を計算できます。10桁でも100万でも構いません。

https://github.com/anakonda3000/HyperMath/をご覧ください。

于 2016-08-01T14:04:23.157 に答える
1

VS2008 では機能するため、F# を使用してテストすることもできますが、運用アプリケーションでは問題になります。

問題 #25、http://blogs.msdn.com/mpeg/archive/2009/04/01/solving-problems-in-c-and-f-part-2.aspxを見てください。使用できる可能性があります。

C# アプリケーションは F# クラスを呼び出すことができ、それらは連携して動作します。

于 2009-10-09T14:40:57.933 に答える
1

IronRuby を使用できる場合 (現時点でどの程度使用できるかはわかりません)、暗黙的に Bignum に変換されます。例:

2 ** 1000与えます: 107150860718626732094842504906000181056140...

于 2009-10-09T14:45:52.323 に答える
1

配列を使用して数字を格納できます。面倒なことはわかっていますが、基本的には、コードを除いて、手動で行うのと同じように乗算をプログラムする必要があります。

于 2009-10-09T14:38:30.217 に答える
0

ここには BigIntというクラスがあります

.Net 4.0 を使用せずにそのタイプの問題に非常に役立ちます

于 2009-10-09T14:40:03.350 に答える
0

Java ランタイムへの参照を追加できます (C:\Windows\Microsoft.NET\Framework\v2.0.50727\vjslib.dll は私が取得したものusing java.mathです)。BigInteger

于 2009-10-09T14:50:52.433 に答える
0

ええと...、2^0 は 1 番目のビット、2^1 は 2 番目のビット、...、2^4 は 5 番目のビットです....これには 1000 ビットが必要です。私はc#について何も知りませんが、ビット単位の表記は999個の0と1個の 1 であることを覚えてみてはどうでしょうか? そして、それに応じて使用してください。

その番号を何に使うつもりですか?

于 2009-10-09T14:45:51.497 に答える