问题标签 [largenumber]

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 回答
3776 浏览

c - Tom-Cook 乘法算法实现

我的任务是实现 Tom-Cook 3 路乘法算法。我正在关注维基百科http://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication上的描述,并且我设法将两个大数字存储到字符串中,并根据维基百科页面上的“拆分”步骤将字符串拆分为较小的数字。下一步是“评估”,我必须计算一个新数字 p0 = m0 + m2(Bordrato 的“更快评估” - 在同一页面上找到)其中 m0 和 m2 是我通过拆分大数创建的数字(在上一步中)。问题是我不能简单地将 m0 和 m2 相加,因为这两个数字仍然非常大,不可能以标准方式相加。这是否意味着我必须实现自己的算法来添加大数(以及减法和除法,因为它们也是需要的),或者我错过了什么?如果有人可以将可能的实现甚至伪代码链接到我,将不胜感激。

0 投票
3 回答
7094 浏览

algorithm - 不等大小、非 2 次幂操作数的 Karatsuba 乘法

用不等大小的输入操作数实现Karatsuba大数乘法的最有效方法是什么,其大小不是 2 的幂,甚至可能不是偶数?填充操作数意味着额外的内存,我想尝试使其内存高效。

我在非偶数大小的 Karatsuba 中注意到的一件事是,如果我们尝试将数字分成尽可能接近偶数的“两半”,一半将有 m+1 个元素,而另一半将有 m 个元素,其中 m = floor(n/2),n 是拆分数中的元素数。如果两个数字的奇数大小相同,那么我们需要计算大小为 m+1 的两个数字的乘积,需要 n+1 存储,而不是 n 为偶数时的 n。所以我猜对奇数尺寸的 Karatsuba 可能比偶数尺寸需要更多的内存吗?

0 投票
2 回答
1606 浏览

c# - .NET 将非常大的数字转换为不同的数字基数

有没有办法将非常大的二进制、十进制和十六进制数字相互转换?我必须用它来模拟高达 256 位的寻址过程。

我想做以下转换(如果可能,将它们存储在一个对象中)

非常大的二进制数 -> 非常大的十进制数

非常大的二进制数 -> 非常大的十六进制数

非常大的十进制数 -> 非常大的二进制数

非常大的十进制数 -> 非常大的十六进制数

非常大的十六进制数 -> 非常大的二进制数

非常大的十六进制数 -> 非常大的十进制数

非常大的二进制数 -> 字符串

非常大的十进制数 -> 字符串

非常大的十六进制数 -> 字符串

拆分和连接非常大的二进制数的可能性非常重要。如果可能的话,我会使用类支持的解决方案,并避免使用 byte[] 类型从一个数字基数手动转换为另一个数字基数。

我试过 BigInteger 类,它可以存储非常大的数字,但不能将它们转换为另一个数字基数。

0 投票
3 回答
2047 浏览

c# - 比较存储在字符串中的非常大的数字

比较字符串文字中包含的两个非常大的数字的最佳方法是什么?

例如,我想比较以下内容:“ 900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011”。

或者

“0000000011111111111111111111111111111111111111111111111111111111111111111朗务治奖

在这两种情况下,显然第二个更大,但是如果不迭代元素,我怎么能有效地找到它呢?

0 投票
1 回答
204 浏览

c# - 查找大型 BigInteger 的日志无法正常工作?

我试图在 C# 中找到一个非常大的 BigInteger 的对数。我不在乎对数的底是什么。当我尝试这个时:

我得到一个溢出异常,因为 Int32 不能保存日志的结果。增加 base 的值是行不通的。

0 投票
0 回答
418 浏览

wolfram-mathematica - 计算非常大的数的对数

我想为非常大的数字(例如 e^e^e^e^10)计算以下函数,并且想知道以下术语的符号。我尝试了一些数字,但它是负数。是否存在任何 m0 使得对于所有 n>m>m0,以下函数为正。

其中 n 大于 m。

我与 Mathematica 并列,但它不计算上述数字。我应该使用特殊包装吗?

谢谢

在此处输入图像描述

0 投票
1 回答
316 浏览

javascript - Javascript 将大的十六进制数转换为二进制

使用

binary= parseInt(hex,16).toString(2)

作为在 js 中将十六进制数转换为二进制数的一种方法,它的值非常大。

例如,0xb5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48b5af48 作为十六进制输入将产生

101101011010111101001000101101011010111101001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

这显然是一个不正确的回应

10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000 10110101 10101111 01001000

将是正确的回应。

我觉得这与 js 如何处理非常大的数字有关,但不知道如何处理。任何帮助是极大的赞赏。找到 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 作为 base64 转换器的最终结果真的很奇怪。

0 投票
4 回答
1119 浏览

python - Python Math.floor 不产生具有大整数的正确值

我目前在 python 中的 math.floor() 函数存在一些问题。我正在尝试计算以下值:

这正在产生答案

我知道这是不对的。我认为这与 Python 对非常大的数字进行算术运算的能力有关——任何人都可以帮忙吗?

谢谢!

0 投票
1 回答
436 浏览

lua - 在 Redis Lua 中精确处理大量数字

我需要在与 Redis 一起使用的 Lua 中处理大量数据。通常你会这样做:

等等,但不幸的是 Redis Lua 不支持“require”。我发现的唯一方法是将用 lua 本身编写的大量库直接插入到脚本中。

我可以得到的唯一这样的库:oss.digirati.com.br/luaignum/index.htm

我可以出于具体脚本的目的剥离库,但它仍然很大。有什么方法可以更有效地处理 Redis Lua 中的大量数据?

UPDATE1:如果我将整个库保存到一个密钥中,然后像这样访问它:

我不确定语法,也许我需要将所有库包含在一个 lua 表 {} 中。

0 投票
2 回答
147 浏览

java - 如何处理超过 3000 位的数字?

输出:2147483647 无穷大

但实际结果有3000多位,我怎样才能得到完整的数字?