【发布时间】:2020-02-03 13:18:34
【问题描述】:
我对 Mersenne Primes https://www.mersenne.org/ 感兴趣。 Great Internet Mersenne Prime Search (GIMPS) 正在做这方面的研究。 这些是质数,但非常大而且很少。 第 49 个梅森素数有 2200 万位长。令人难以置信的是,一个数字可以是 2200 万位。
我试过并且可以赶上第 8 个梅森素数,它有 10 位数长,在 20 亿以内。 我正在使用 Postgres BIGINT,它最多支持 19 位长整数,即 900 万亿。 所以,如果我一次处理 10 亿行,我需要 900 万次迭代。 我可以进一步使用支持小数点左侧 131072 位和精度 16383 位的 NUMERIC 数据类型。当然,我只需要使用整数。我不需要精确。 另一种选择是 Postgres 的 CHAR VARYING,它可以存储多达 10 亿个。但不能用于计算。
Postgres 提供的东西足以满足任何实际需求。 我的问题是 GIMPS 的人如何计算如此大的数字。 他们是否将这些数字存储在任何数据库中。哪个数据库支持这么大的数字。 我是否与数据库世界取得的进展不同步。
我知道他们拥有强大的处理能力 Curtis Cooper 提到正在使用 700 台服务器来发现和验证这些数字。 确切需要多少存储空间。正在使用什么语言。
只是好奇。这听起来像是我失业了吗?
谢谢
bb23850
【问题讨论】:
-
就 GIMPS 而言,看起来他们的源代码在 Assembly 中。我对汇编了解不多(确实很少),但据我所知,汇编不需要数据类型,它只是推动内存位置。所以存储数百万甚至数十亿的数字只是内存分配的问题。位就是位,无论该位是数字、单词、日期还是其他东西的一部分都没有关系。汇编只知道位操作(同样,这是据我所知)。
-
感谢您的回答。没有出现的是他们如何存储这些数字以供重复使用。梅森数不是素数。必须根据质数对其进行验证。因此质数必须存储在数据库或文件中。这是我的理解。
标签: sql postgresql bigint