在某些情况下,程序员需要或想要找到非常大的数字。它们通常很大,以至于无法理解程序员的理解。我说的是最大的已知素数(有 12978189位)和最近计算的10 万亿位 pi。
您如何创建处理这些问题的程序?这远远超过了整数、long、double、BigInteger、BigDecimal 或任何类似的东西。这些用于发现这些数字的程序是如何创建的?当不存在合适的数据类型时,你怎么能将它们存储在内存中,并且它们每个都可能消耗千兆字节的数据?
(抽象的)答案是使用机器的本机类型编写算法,以产生您想要的结果。例如,当您在纸上对两个非常大的整数进行手动加法时,您需要的最大实际计算量仅为 9+9+1(进位为 9 加 9 加 1)。当然,你需要足够大的纸来首先写下这两个数字,然后再写下答案。因此,只要两个数字和答案可以存储在计算机的硬盘(论文)中,就可以编写一个算法来处理只需要一个高达 19 的值的变量;因此,即使是char
变量也能够处理这个问题,更不用说int
变量了。
(具体的)答案是,真正优秀的程序员已经这样做了,甚至还有 FOSS 库。一个很好的是 GNU 项目的GMP 库,它有很多函数来处理任意大小的整数运算和任意精度的浮点运算。所以只要你的电脑能存储计算时需要的信息,就可以完成。当然,您需要花时间阅读文档。