問題タブ [biginteger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1751 参照

c++ - Visual C ++ BigIntとSecureRandom?modPowを備えたBigIntライブラリはありますか?

いくつかの暗号コードをJavaからVisualC++に移植する必要がありますが、これは(Visual C ++)私にはあまり馴染みがありません。http://sourceforge.net/projects/cpp-bigint/で、大きな整数に使用できるライブラリを見つけました。

ただし、javasSecureRandomクラスに相当するものはありません。c ++でbeecryptというプロジェクトを見つけましたが、VisualStudio2008で動作させることができませんでした。

これらのタイプのライブラリの経験はありますか?私もgmpを見ましたが、VisualStudioで動作するものをすぐに見つけることができませんでした。

間違った道を進む前に何かアドバイスはありますか?

ありがとう!

- - アップデート - - - -

上からcpp-bigintを使用して、少数の概念実証を行っているようです。ライブラリにはmodPow関数はありません。今のところ、次のようなforループを作成しました。

{x = x * g; x = x%p; }

これにより、x = g ^ r mod pが得られますが、非常に低速です。modPow関数を備えた他のBitIntegerライブラリを知っている人、またはこれを計算するためのより高速な方法を知っている人はいますか?

ありがとう!

0 投票する
4 に答える
9268 参照

php - PHPで大きな数を処理する方法は?

PHPで大きな数を処理する方法は?

そのような

0 投票する
1 に答える
4561 参照

java - 任意のサイズのbyte[]をBigInteger[]に変換してから、まったく同じbyte []に​​安全に変換し直します。手がかりはありますか?

私の場合、BigInteger[]への変換が最適だと思います。これがJavaで書かれていて、共有したいと思っている人はいますか?

それで、私が任意のサイズを持っていると想像してくださいbyte[] = {0xff,0x3e,0x12,0x45,0x1d,0x11,0x2a,0x80,0x81,0x45,0x1d,0x11,0x2a,0x80,0x81} 。それをBigIntegerの配列に変換してから、元のバイト配列に安全に復元できるようにするにはどうすればよいですか?

事前にt​​y。

0 投票する
1 に答える
1036 参照

xslt - msxml を処理する XSLT 大きな整数 (int64)

xslt テンプレートで大きな整数 (int64) の大きな数値を計算しようとすると、xslt にはネイティブの 64 ビット整数サポートがないため、間違った結果が得られます (xslt 番号は 64 ビット倍精度です)。Windows XP SP3 で msxml 6.0 を使用しています。Windows でこれを回避する方法はありますか?

このテストは、64 ビット double での大きな整数の不正確な表現のために true を返します (私は推測しています) が、数値データにデフォルトの 64 ビット double ではなく int64 を使用するよう xslt プロセッサに何らかの方法で指示できた場合、実際には false になります。 big integer は、xml 入力の数値の実際のデータ型であるためです。

ここに完全なテンプレートがあります

0 投票する
5 に答える
26910 参照

c++ - 最高の(ポータブルな)クロスプラットフォームの任意精度の数学ライブラリは何ですか?

CまたはC++で適切な任意精度の数学ライブラリを探しています。アドバイスや提案をお願いします。

主な要件:

  1. 任意の大きさの整数を処理する必要があります。私の主な関心は整数です。恣意的に大きいという言葉が何を意味するのかわからない場合は、100000のようなものを想像してみてください。(100000の階乗)。

  2. ライブラリの初期化またはオブジェクトの作成中に精度を指定する必要はありません。精度は、システムの利用可能なリソースによってのみ制約される必要があります。

  3. プラットフォームの能力をフルに活用し、「小さな」数をネイティブに処理する必要があります。つまり、64ビットプラットフォームでは、(2 ^ 33 + 2 ^ 32)の計算には使用可能な64ビットCPU命令を使用する必要があります。ライブラリは、同じプラットフォームで(2 ^ 66 + 2 ^ 65)を使用する場合と同じ方法でこれを計算するべきではありません。

  4. 加算( )、減算()、乗算()、整数除算()、剰余()、累乗()、増分()、減分()、GCD、階乗、およびその他の一般的な整数算術計算を効率的に処理する必要があります。整数の結果を生成しない平方根や対数などの関数を処理する機能はプラスです。記号計算を処理する機能はさらに優れています。+-*/%**++--

これが私がこれまでに見つけたものです:

  1. JavaBigIntegerおよびBigDecimalクラス:私はこれまでこれらを使用してきました。ソースコードを読みましたが、その下の計算がわかりません。それは私が学んだことのない理論やアルゴリズムに基づいているのかもしれません。

  2. 組み込み整数型またはbcPythonRubyHaskellLispErlangOCamlPHP、その他の言語のコアライブラリ:これらのいくつかを使用しましたが、どのライブラリを使用しているかわかりません。彼らが使用している実装の種類。

私がすでに知っていること:

  1. char10進数字と10進文字列に使用char*し、-loopを使用して数字の計算を行いますfor

  2. int(または、、long intまたはlong long)を基本的な「単位」として使用し、そのタイプの配列を任意の長整数として使用し、for-loopを使用して要素の計算を行います。

  3. 整数型を使用して、10進数(または数桁)をBCD(2進化10進数)として格納します。

  4. ブースの乗算アルゴリズム

私が知らないこと:

  1. 単純な方法を使用せずに、上記のバイナリ配列を10進数で印刷します。単純な方法の例:(1)ビットを最低から最高に追加します:1、2、4、8、16、32、…(2)char*上記の-文字列を使用して中間の小数の結果を格納します)。

私が感謝すること:

  1. GMPMPFRdecNumber(またはあなたの意見で良い他のライブラリ)の良い比較。

  2. 私が読むべき本や記事に関する良い提案。たとえば、ナイーブでない2進化10進変換アルゴリズムがどのように機能するかを図で示したものが適切です。DouglasW.Jonesによる記事「<strong>制限付き精度での2進数から10進数への変換」は良い記事の例です。

  3. 一般的なヘルプ。

(または、、または)を使用するとこの問題を簡単に解決できると思われる場合は、この質問に答えないでください。そう思うと、問題の問題を理解できません。doublelong doublelong long double

0 投票する
7 に答える
5583 参照

java - 必要に応じて BigInteger に切り替える

[1, 10^100] の範囲の数値を含むテキスト ファイルを読み込んでいます。次に、各数値に対して一連の算術演算を実行しています。数値が int/long の範囲外の場合にのみ BigInteger を使用したいと思います。1 つの方法は、文字列の桁数を数え、多すぎる場合は BigInteger に切り替えることです。それ以外の場合は、より高速な原始演算を使用します。より良い方法はありますか?

int が小さすぎる場合、Java がこれを自動的に行うことができなかった、つまり BigInteger に切り替えられなかった理由はありますか? この方法では、オーバーフローを心配する必要はありません。

0 投票する
6 に答える
6367 参照

c++ - C++で大きな数のn乗根を取得するには?

大きな数の n 乗根 (に収まらない数) を取ることができる C++ ライブラリはありunsigned long longますか?

0 投票する
8 に答える
1034 参照

biginteger - プロセッサに BigInt サポートが組み込まれていないのはなぜですか?

私が理解している限り、BigInts は通常、数字を含む配列としてほとんどのプログラミング言語で実装されています。たとえば、2 つ追加すると、学校で知っているように、各数字が次々に追加されます。

* は、オーバーフローがあったことを示します。私は学校でこの方法を学び、実装したすべての BigInt 追加関数は上記の例と同様に機能します。

したがって、プロセッサーが 0 から2^32/までの int のみをネイティブに管理できることは誰もが知っています2^64

つまり、ほとんどのスクリプト言語は、高レベルで大きな整数を使用した算術演算を提供するために、上記のように整数を配列として扱う BigInt ライブラリを実装/使用する必要があります。しかしもちろん、これはプロセッサよりもはるかに遅くなることを意味します。

だから私が自分自身に尋ねたのは:

  • プロセッサーに BigInt 関数が組み込まれていないのはなぜですか?

他の BigInt ライブラリと同じように動作しますが、(はるかに) 高速で低レベルです。プロセッサはキャッシュ/RAM から 1 桁をフェッチし、それを追加して、結果を再度書き込みます。

私には素晴らしいアイデアのように思えますが、なぜそのようなものがないのでしょうか?

0 投票する
7 に答える
8878 参照

c# - C#でBigIntegerを初期化する方法は?

System.Numerics.BigIntegerデータ型の使用方法を教えてもらえますか?これを参照として使用してみました -http://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28VS.100%29.aspx

しかし、System.Numerics名前空間が私のコンピューターにありません。VS2010 Ultimate RCをインストールし、.NETFramework4.0を使用しています。誰かが私にこれを案内してもらえますか?

0 投票する
3 に答える
218 参照

c# - System.Numericsで入力すると、Reflectorで空が表示されるのはなぜですか?

それがどのように機能するかを研究するために、リフレクターでSystem.Numericsを開きました。

しかし、BigIntegerとComplexのすべてのメソッドは空です。なんで?これはどのように機能しますか?