0

我正在使用 GMP 库制作一个 Pi 程序,它将计算大约 7 万亿位数的 Pi。问题是,我不知道需要多少位来保存那么多小数位。

4

3 回答 3

1

7 万亿位数字可以表示 10^(7 万亿) 个不同数字中的任何一个。

x 位可以表示 2^x 个不同的数字。

所以你想解决:

2^x = 10^7000000000000

取双方的log-base-2:

x = log2(10^7000000000000)

回想一下log(a^b)= b * log(a)

x = 7000000000000 * log2(10)

我得到23253496664212了比特。为了安全起见,我会再添加一两个。不过,祝你好运找到容纳它们的 PB。

我怀疑您将需要一个更有趣的算法。

于 2011-06-20T17:01:29.333 回答
1

我只想更正响应答案中所写内容的一件事:

回想一下 log(a^b) = a * log(b)

正好相反:

log(a^b) = b * log(a)
于 2013-09-27T21:07:21.050 回答
0

2^10 = 1024,所以十位代表略多于三位。既然你说的是 7 万亿位数字,那将是 23 万亿位或大约 3 TB,这比我上次访问 Costco 的一个驱动器所能得到的还多。

你可能会变得过于雄心勃勃。我想知道每次操作读取和写入整个磁盘的 I/O 时间。

(解决它的数学方法是使用对数,因为一个需要 7 万亿位数字来表示的数字的对数底数为 10 约为 7 万亿。在现有底数中找到数字的对数,转换底数,然后你我得到了答案。对于基数 2 和基数 10 之间的简写,使用十位 == 三位数,因为这并没有太大的错误。它说 2 的以 10 为基数的对数是 0.3,而实际上它更像是 0.301。 )

于 2011-06-20T17:05:07.623 回答