在某些情况下,程序员需要或想要找到非常大的数字。这些往往是如此之大,以至于它们无视程序员的理解。我说的是the largest known prime number(12978189 digits )和最近计算的10 trillion digits of pi等内容。
如何创建处理这些程序的程序?这远远超过整数,long,double,BigInteger,BigDecimal或任何类型。如何创建这些用于发现这些数字的程序?如果没有合适的数据类型,你怎么能将它们存储在内存中,并且它们每个可能会消耗千兆字节的数据?
答案 0 :(得分:4)
要解决您的具体示例:
答案 1 :(得分:0)
(抽象的)答案是使用机器的本机类型编写算法,以产生所需的结果。例如,当您手工在纸上添加两个非常大的整数时,所需的最大实际计算量仅为9 + 9 + 1(9加9加1加进位)。当然,您需要足够大的纸张以首先将两个数字写下来,并将答案也写下来。因此,只要可以将两个数字和答案存储在计算机的硬盘(纸质文件)中,就可以编写一种算法,使用仅需要19以下的值的变量来完成该算法。因此,即使一个char
变量也能够处理这个问题,更不用说int
变量了。
(具体的)答案是,真正好的程序员已经做到了这一点,甚至还有FOSS库。一个很好的例子是GNU工程的GMP library,它具有处理任意大小整数算法和任意精度浮点算法的功能。因此,只要您的计算机可以存储计算过程中所需的信息,就可以完成。您需要花时间阅读课程文档。