Answers:
所以你的问题如下:
输入:整数
问题:是否存在质数?
据我所知,尚不清楚该问题是否在P中。
这是我所知道的:
素数测试(给定一个数字,测试其是否为质数)在P中,因此,如果范围足够小,则可以详尽地测试范围内的每个数字以查看其是否为质数-但这不会导致通用算法。
如果Cramer的猜想为真,则问题出在P。Cramer的猜想说附近的连续素数之间的距离为,因此以下算法将在P中:迭代数字,分别测试是否为质数;如果找到一个最佳的,则立即回答“是”;如果您打,请停止回答。Cramer的猜想告诉我们,您将在大多数素性测试之后停止,因此该算法将在多项式时间内运行。
不幸的是,关于主要缺口的已知结果似乎不足以无条件地证明问题出在P中。
这是另一个简单的算法:反复从选取一个随机整数,并测试它是否为素数。如果找到素数,或者尝试过每个整数但都不是素数,则停止。从经验上讲,我们应该期望这在实践中是有效的。质数定理告诉我们,如果您随机选择附近的数,则它的质数概率约为。因此,试探性地,我们应该期望在大约次迭代之后,您通常会找到一个素数并停止(如果存在)。另一方面,由于优惠券收集者的问题,如果范围内没有素数,您将在大约次迭代后停止。因此,如果我们对素数之间最长的间隔的大小有一个很好的上限,则意味着问题出在BPP。即使没有这样的上限,随之而来的是随机问题实例也很容易。
实际上,可以使用筛分方法来缩短运行时间(例如,避免对可被小素数整除的数字进行任何素数测试)。我不知道这是否可以导致任何渐近性改善。
由于这些技术,该问题在实践中可能很容易。
由于上述原因,我个人怀疑问题是否是NP完全问题。