你怎么能处理荒谬的大数字?

在某些情况下,程序员需要或想要找到非常大的数字 . 这些往往是如此之大,以至于他们无视程序员's comprehension. I'm谈论的事情,如the largest known prime number(12978189位)和最近计算的10 trillion digits of pi .

你怎么能创建一个处理这些的程序?这远远超过整数,long,double,BigInteger,BigDecimal或任何类型 . 如何创建这些用于发现这些数字的程序?如果没有合适的数据类型,你怎么能将它们存储在内存中,并且它们每个可能会消耗几千兆字节的数据?

回答(1)

2 years ago

要解决您的具体示例:

  • 对于要处理的典型“大整数”类,1200万位整数并不是非常大 . 这应该能够存储在内存中 .

  • 要存储10万亿个π数字,您可以使用磁盘文件并对其进行内存映射 . 您可能需要一些磁盘和像磁盘一样的文件系统(可以将它存储在磁盘上),并将其映射到CPU地址空间 . 计算π的算法(例如BBP)可以方便地一次计算一个十六进制数字,该数字非常适合半个字节的存储器 .