Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 梅森素数处理_Sql_Postgresql_Bigint - Fatal编程技术网

Sql 梅森素数处理

Sql 梅森素数处理,sql,postgresql,bigint,Sql,Postgresql,Bigint,我对梅森素数感兴趣。 伟大的互联网梅森Prime Search GIMPS正在这一领域进行研究。 这些都是素数,但非常大,而且很少。 第49个梅森素数的长度为2200万位数。令人难以置信的是,一个数字可以是2200万位数 我试过了,可以赶上第八个梅森素数,10位数长,不超过20亿。 我使用的是Postgres BIGINT,它支持高达19位的整数,即900亿。 所以,如果我一次处理10亿行,那么需要900万次迭代。 我可以进一步使用数字数据类型,它支持十进制左边131072位和16383位的精度

我对梅森素数感兴趣。 伟大的互联网梅森Prime Search GIMPS正在这一领域进行研究。 这些都是素数,但非常大,而且很少。 第49个梅森素数的长度为2200万位数。令人难以置信的是,一个数字可以是2200万位数

我试过了,可以赶上第八个梅森素数,10位数长,不超过20亿。 我使用的是Postgres BIGINT,它支持高达19位的整数,即900亿。 所以,如果我一次处理10亿行,那么需要900万次迭代。 我可以进一步使用数字数据类型,它支持十进制左边131072位和16383位的精度。当然,我只需要处理整数。我不需要精确。 另一种选择是Postgres的CHAR Variable,它可以存储多达10亿个字符。但它不能用于计算

博士后提供的东西足以满足任何实际需要。 我的问题是GIMPS的人是如何计算这么大的数字的。 他们是否将这些数字存储在任何数据库中。哪个数据库支持这么大的数字。 我是否与数据库世界取得的进步不同步

我知道他们有巨大的处理能力Curtis Cooper提到700台服务器被用来发现和验证数字。 具体需要多少存储空间。正在使用什么语言

只是好奇。这听起来像是我失业了吗

谢谢


bb23850

评论太长了

梅森数很容易计算。它们总是比2的幂小一:

select n, cast(power(cast(2 as numeric), n) - 1 as numeric(1000,0))
from generate_series(1, 100, 1) gs(n)
order by n;
挑战在于确定结果数字是否为素数。Mersenne知道n必须是素数,才能使对应于Mersenne数的数成为素数

计算机的速度是如此之快,一旦一个数字有十几个左右的数字,就不可能对所有因素进行彻底的搜索。从上面的代码中可以看出,在第100个梅森数之前很久,穷举搜索就变得不可行了


为了确定这样一个数字是否是素数,人们使用了大量的数学知识——其中一些是为这个特殊问题而发明的,或者是受到这个问题的启发。我敢肯定,在关系数据库中实现这些素性测试是非常困难的。

谢谢你的回答。并非所有的梅森数都是素数。2^4-1=15,2^6-1=63不是质数。我花了将近24小时处理了10亿个数字来识别素数。现在我意识到这是一项多么艰巨的工作。你的意思是有其他的算法来验证它是否是素数。这是一个值得探讨的有趣课题。但我不会轻易放弃数据库。@BB23850。我对数据库有很多了解,对数论也有一些了解,对高等数学也有足够的了解,我知道数据库不太可能在这方面有所帮助,除非作为更复杂算法的一部分,作为信息的数据存储。但我鼓励你们努力去理解更多关于梅森素数、一般素数和数论的知识。就GIMPS而言,他们的源代码看起来很有用。我对汇编知道的不多,但就我所知,汇编不需要数据类型,它只是推动内存位置。所以存储数百万甚至数十亿的数字只是一个内存分配的问题。一个比特就是一个比特,不管这个比特是数字、单词、日期还是其他东西的一部分。汇编只知道再次位运算,这是我所知的最好的。谢谢你的回答。没有公布的是他们如何存储这些数字以供重用。梅森数不是素数。我们必须用质数来验证它。所以素数必须存储在数据库或文件中。这是我的理解。