问题标签 [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 (visual c++) 移植到 Visual c++。我在http://sourceforge.net/projects/cpp-bigint/找到了一个可用于大整数的库。

但是,它没有等效于 javas SecureRandom 类。我确实在 c++ 中找到了一个名为 beecrypt 的项目,但无法让它与 Visual Studio 2008 一起使用。

有没有人对这些类型的库有任何经验?我也看到了 gmp,但找不到与 Visual Studio 一起工作的那个。

在我走错路之前有什么建议吗?

谢谢!

- - 更新 - - - -

我似乎有一个概念证明,可以从上面使用少量的 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 的数组,然后能够安全地将它恢复回原始字节数组?

提前。

0 投票
1 回答
1036 浏览

xslt - XSLT 大整数 (int64) 处理 msxml

当尝试对 xslt 模板中的大整数 (int64) 大数进行数学运算时,我得到错误的结果,因为 xslt 中没有本机 64 位整数支持(xslt 数是 64 位双精度数)。我在 Windows XP SP3 上使用 msxml 6.0。在 Windows 上是否有任何解决方法?

由于 64 位双精度中大整数的不精确表示,此测试返回真(我假设),但如果我可以告诉 xslt 处理器以某种方式使用 int64 而不是默认的 64 位双精度数字数据,则实际上是假的因为大整数是 xml 输入中数字的实际数据类型。

这是完整的模板

0 投票
5 回答
26910 浏览

c++ - What are the best (portable) cross-platform arbitrary-precision math libraries?

I’m looking for a good arbitrary precision math library in C or C++. Could you please give me some advices or suggestions?

The primary requirements:

  1. It must handle arbitrarily big integers—my primary interest is on integers. In case that you don’t know what the word arbitrarily big means, imagine something like 100000! (the factorial of 100000).

  2. The precision must not need to be specified during library initialization or object creation. The precision should only be constrained by the available resources of the system.

  3. It should utilize the full power of the platform, and should handle “small” numbers natively. That means on a 64-bit platform, calculating (2^33 + 2^32) should use the available 64-bit CPU instructions. The library should not calculate this in the same way as it does with (2^66 + 2^65) on the same platform.

  4. It must efficiently handle addition (+), subtraction (-), multiplication (*), integer division (/), remainder (%), power (**), increment (++), decrement (--), GCD, factorial, and other common integer arithmetic calculations. The ability to handle functions like square root and logarithm that do not produce integer results is a plus. The ability to handle symbolic computations is even better.

Here are what I found so far:

  1. Java's BigInteger and BigDecimal class: I have been using these so far. I have read the source code, but I don’t understand the math underneath. It may be based on theories and algorithms that I have never learnt.

  2. The built-in integer type or in core libraries of bc, Python, Ruby, Haskell, Lisp, Erlang, OCaml, PHP, some other languages: I have used some of these, but I have no idea which library they are using, or which kind of implementation they are using.

What I have already known:

  1. Using char for decimal digits and char* for decimal strings, and do calculations on the digits using a for-loop.

  2. Using int (or long int, or long long) as a basic “unit” and an array of that type as an arbitrary long integer, and do calculations on the elements using a for-loop.

  3. Using an integer type to store a decimal digit (or a few digits) as BCD (Binary-coded decimal).

  4. Booth’s multiplication algorithm.

What I don’t know:

  1. Printing the binary array mentioned above in decimal without using naive methods. An example of a naive method: (1) add the bits from the lowest to the highest: 1, 2, 4, 8, 16, 32, … (2) use a char*-string mentioned above to store the intermediate decimal results).

What I appreciate:

  1. Good comparisons on GMP, MPFR, decNumber (or other libraries that are good in your opinion).

  2. Good suggestions on books and articles that I should read. For example, an illustration with figures on how a non-naive binary-to-decimal conversion algorithm works would be good. The article “<strong>Binary to Decimal Conversion in Limited Precision” by Douglas W. Jones is an example of a good article.

  3. Any help in general.

Please do not answer this question if you think that using double (or long double, or long long double) can solve this problem easily. If you do think so, you don’t understand the issue in question.

0 投票
7 回答
5583 浏览

java - 必要时切换到 BigInteger

我正在阅读一个文本文件,其中包含 [1, 10^100] 范围内的数字。然后我对每个数字执行一系列算术运算。仅当数字超出 int/long 范围时,我才想使用 BigInteger。一种方法是计算字符串中有多少位,如果太多则切换到 BigInteger。否则我只会使用原始算术,因为它更快。有没有更好的办法?

如果 int 太小,Java 是否有任何理由不能自动执行此操作,即切换到 BigInteger?这样我们就不用担心溢出了。

0 投票
6 回答
6367 浏览

c++ - 如何在 C++ 中获得大数的第 n 个根?

是否有一个 C++ 库可以取大数的第 n 个根(数字不能放入 an 中unsigned long long)?

0 投票
8 回答
1034 浏览

biginteger - 为什么我的处理器没有内置 BigInt 支持?

据我了解,BigInts 通常在大多数编程语言中实现为包含数字的数组,其中,例如:当添加其中两个时,每个数字都会像我们在学校所知道的那样一个接一个地添加,例如:

其中 * 表示存在溢出。我在学校就是这样学的,我实现的所有 BigInt 添加功能都与上面的示例类似。

所以我们都知道我们的处理器只能本地管理从 0 到2^32/的整数2^64

这意味着大多数脚本语言为了成为高级语言并提供具有大整数的算术,必须实现/使用将整数作为上述数组工作的 BigInt 库。但这当然意味着它们会比处理器慢得多。

所以我问自己的是:

  • 为什么我的处理器没有内置 BigInt 函数?

它可以像任何其他 BigInt 库一样工作,只是(很多)速度更快且级别更低:处理器从缓存/RAM 中获取一个数字,添加它,然后再次写回结果。

对我来说似乎是个好主意,那为什么没有类似的东西呢?

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 并且我有 .NET Framework 4.0。有人可以指导我完成这个吗?

0 投票
3 回答
218 浏览

c# - 为什么 System.Numerics 中的类型在 Reflector 中显示为空?

我在反射器打开 System.Numerics 来研究它是如何工作的。

但是 BigInteger 和 Complex 的所有方法都是空的。为什么?这怎么行?