确定间隔是否包含质数


14

确定自然数的间隔是否包含质数的复杂性是什么?Eratosthenes筛子的一个变体给出了算法,其中是区间的长度,在区间的起点隐藏了多对数因子;我们可以做得更好(单就而言)?大号大号Ø大号大号大号


1
Nitpick:Eratosthenes筛在开始时甚至不会为您提供一个多对数因子,即使是长度为1的间隔也是如此。确实有可能检查数字是否为质数,即时间是否为对数。表示形式的多项式),但这需要一种比Eratosthenes筛子复杂得多的算法。
Vanessa

1
@Squark是,应该指定“相对于给定因子库的伪素数”。尽管随着时间间隔的起点变大,但素数测试的预期成本却降为零...
Elliot Gorokhovsky '18

Answers:


27

免责声明:我不是数论专家。

简短的答案:如果您愿意假设“合理的数论猜想”,那么我们可以确定在时间p o l y l o gn 的时间间隔中是否存在素数。如果你不愿意做这样的假设,然后有一个美丽的算法,由于该奥德里兹科达到ñ 1 / 2 + Ö 1 ,我认为这是已知的最好的。[n,n+Δ]polylog(n)n1/2+o(1)

非常有用的链接,其中包含有关一个紧密相关的问题的大量有用信息PolyMath项目有关确定素数的确定性算法

长答案

这是一个棘手的问题,是一个活跃的研究领域,并且似乎与质数之间的有限缺口这一棘手的问题密切相关。您的问题在道德上与确定性地找到2 n之间的质数的问题非常相似,最近它是PolyMath项目的主题。(如果您真的想深入研究这些问题,那么可以从该链接开始。)尤其是,我们针对这两个问题的最佳算法基本上是相同的。n2n

在这两种情况下,最佳算法在很大程度上取决于素数之间的间隙大小。特别是,如果使得nn + f n 之间始终存在素数(并且f n 可以有效地计算),那么我们总是可以找到时间p o l y的素数ø ñ ˚F ñ 如下。确定nn +之间是否有质数f(n)nn+f(n)f(n)polylog(n)f(n)n,首先检查如果 Δ ˚F Ñ 。如果是,则输出是。否则,仅遍历 n n + Δ之间的整数并测试每个素数,如果找到素数则回答是,否则返回否。(这可以确定性地完成,这就是为什么确定性地找到 n 2 n之间的质数与确定在一定间隔内是否存在质数如此紧密相关的原因。)n+ΔΔf(n)nn+Δn2n

如果素数的行为像我们认为的那样,那么这就是故事的结局(最多为因素)。特别地,我们期望能够取f n = O log 2 n 。这在HaraldCramér之后被称为Cramér的猜想,并且证明目前似乎遥不可及。但是,据我所知,它被广泛相信。(一个到达这个猜想,例如,从启发式,所述素数行为像通过包括每个整数获得的随机整数集Ñ 3polylog(n)f(n)=O(log2n)n3随机独立地以概率)。1/logn

有迹象表明,暗示多弱得多的结合许多猜测,例如勒让德的猜想。(我不知道这是众所周知的暗示中间绑定任何的猜测,虽然我想象它们的存在。)而且,黎曼假设是已知的暗示类似的绑定˚FñØf(n)O(n)。因此,如果您假设这些猜想,则实际上是将Odlyzko的算法(系数为n o 1 )与更为简单的算法相匹配。f(n)O(nlogn)no(1)

我认为,最好的无条件界现在的问题是由于贝克,哈曼和Pintz。因此,如果您不做任何假设,那么Odlyzko的算法将明显的算法击败n约为0.025O~(n0.525)n0.025


3
这个答案真棒!是否可以采用这些方法来确定在k是给定数的区间中是否存在素数?而且,这种情况下的复杂性是什么?kk
Michael Wehar '18

3
π(x):=\# primes below xpn+kpnpn+1pn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.