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