让我们从最小的素数集开始,像对待毒蛇一样仔细地处理这个问题。对于一个素数,答案当然是微不足道的——对于一个素数,你不能除以一个以上的连续数,而最小的这个数就是第一个素数本身:2。用前两个素数2和3,你可以划分三个连续的数字,比如2、3和4,不能再划分了。很明显,最长的序列必须以偶数开始和结束,因为如果不是这样,您可以在任意一端附加相邻的一个或多个偶数,以形成更长的序列。因此,最长序列的长度总是奇数。如果我们继续前三个素数-2、3和5的模式,我们会发现它们将五个连续的数字2、3、4、5和6相除。三个素数能将七个数字的序列相除吗?一个七的序列将有四个偶数,留下三个奇数,我们可以将其标记为n个,n个+2和n个+ 4. 很明显,数字3和5不能除以这些奇数中的每一个。因此,对于三个素数来说,七的序列是不可能的,而五是它们能划分的最长序列。以类似的方式,我们可以证明四个素数不能支持九个以上的连续整数,并且这种类型的序列再次出现在从2到10的九个数字中,这九个数字可以被前四个素值2、3、5和7除尽。这似乎太容易了!然后突然,对于一组五个素数,事情开始以两种不同的方式出错。(有趣的是,拼图要求五个除数。)
如果我们遵循我们熟悉的模式,我们会发现第一个素数2、3、5、7和11将11个数字从2除以12。然而,使用与上述相同的分析,我们可以证明五个素数应该可以除以13个整数。作为Rainer aus dem春季首先指出,这五个素数将以114:114(2)、115(5)、116(2),117(3)、118(2。这显然打破了我们的简单模式,但事实证明还有一个更令人惊讶的地方:一个由13个整数组成的较小的连续序列也可以被不同的五个素因子集整除。作为Rainer aus dem春季在他的首次评论发表两周后,最小的序列开始于整数24:24(2)、25(5)、26(2),27(3)、28(2)和29(29)、30(2)或31(31)、32(2)。对于蛇肋骨爱好者来说,最小的蛇用五个烤架烤出13根肋骨的熟食,只有36英寸长。这条蛇刚刚咬了我们的后背!
那么,这只是需要通过计算机搜索才能发现的武断行为吗,还是有什么方法可以用来发现答案?我答应过你聪明会得到回报,所以这里有一个聪明的启发式方法。
首先,请注意上述两个实例中除数模式之间的相似性。特别是,素数7和11在114到126的序列中只出现一次。贡献更大的素数是:2,它除以七个整数,3和5,它们各自再除以两个整数。所以最后两个素数,7和11,只贡献了每个额外整数的最小值。与非熟练劳动力一样,它们也可以被其他任何两个素数所取代。方法如下。只需片刻,将数字114视为零,并用其与114的偏移量替换后续整数。现在,如果我们取任何一组13个整数,其中2除以第0个整数,3除以偏移量为3的整数(因此也是第0个),5除以偏移量1的整数,那么这三个素数可以保证除下一个13中的11个整数。剩下的两个整数必须是素数本身,或者具有2、3和5以外的素数因子。
所以我们要找到最小的这样的序列,只需要找到一个可以被2和3整除的整数,在被5除时留下4的余数(因为5必须用偏移量1除这个数,所以它的余数为5–1=4)。幸运的是,对于我们来说,这个为给定的一组素数留下一组指定余数的最小整数的问题是由四世纪的中国数学家孙聪聪(Sun Tsu Suan-Ching)提出的,并有具体的例子,六世纪的印度数学家Aryabhata描述了求解该问题的算法。这是一个被称为中国余数定理,以纪念秦九韶在1247年推广的完全解。研究这种方法会让我们走得太远——目前,我们只能利用现代数学家的一个神奇助手,知识引擎我们只需在Wolfram Alpha中键入“chineseremainder((0,0,4),(2,3,5)”,就会弹出答案:24。急板地!我们已经找到了13个整数的最小序列的起始位置(因此也就找到了最小蛇的长度,即从24英寸算起的第13个整数,即36英寸)。这两个额外的素数是29和31。
我们现在可以概括上述内容,并提出一个启发式程序来找到最短的蛇。因为最小的质数除以最多的整数,所以从它们开始。作为Rainer aus dem Spring指出带有指向的链接一篇论文来自日志计算数学,最小的素数并不能绝对保证总是给出最大的可能部分:有时,一组不同的素数可以做得更好。然而,这样的反例非常罕见,已知的第一个反例发生在一组24个素数上,这超出了我们问题所需的最大组。
现在,让我们开发出一种通用的启发式方法来计算答案,我们可以称之为“惰性素数替换”。下面是惰性素数替代的演示,以找到可被六个素数整除的21个连续整数的第一个最大序列。像往常一样,我们将从前六个素数开始:2、3、5、7、11和13。
首先,按顺序写出数字0到20。我们将使用它们为我们选择的素数找到最佳偏移。由于序列0必须从偶数开始,请划掉所有偶数,并将下标2加到数字0上。你现在应该有:
021234567891011121314151617181920
接下来,从最大值中减去最小的未交叉数,得到新的“未交叉范围”,即19–1=18。下一个最高的素数(3)会把它除掉吗?如果不是,请尝试下一个最高质数(5)。如果这也不起作用,那么返回到较小的素数,并使用偏移量来划掉大多数新数字。在这种情况下,3除以18,所以划掉第一个未交叉的数字,再加上下标3,然后划掉所有与第一个数字相隔的数字,这些数字是3的倍数。这将导致划掉1、7、13和19。再次查找未交叉的范围。现在是17–3=14。因此,选择下一个除以14的素数(7),并重复上述步骤。重复上述步骤,直到剩下的未交叉数等于未使用的素数。您应该得到以下结果:
02 13 2 37 4 55 6 7 89101112 13 14 15 16 17 18 19 20
两个数字9和11没有交叉,两个素数11和13没有使用。正如您可能已经猜到的那样,我们的启发式过程设计为使用素数来最密集地填充整数,每个素数至少贡献两个除数。现在,我们将使用中国剩余定理仅用贡献的素数替换非贡献的惰性素数(在本例中为11和13)。我们可以通过从下标中减去交叉整数(必要时取模)来找到每个素数的余数。在这个例子中,我们有0表示2,2表示3,4表示7,0表示5的余数。在Wolfram Alpha中键入“chineseremainder((0,2,4,0),(2,3,7,5)”,弹出数字200,这实际上是21个整数的最小连续序列的开始,这些整数可以被六个素数整除。我们只有四个这样的素数,但仅仅通过检查就很容易找到另外两个。额外的素数是209和211。
这种带有一些调整的启发式方法适用于多达10个素数。之后,它变得笨拙,可能需要计算机增强。这种启发式思维还可以确定给定数量的素数的最大序列长度,正如我们上面看到的那样。然而,这是一个已解决的问题,我们可以使用序列A058989号在中整数序列在线百科全书作为快捷方式。
问题1中多达10个素数的正确答案由Rainer aus dem春季使用计算机搜索,这是证明它们实际上是最低值序列的唯一方法。具体如下:
2素数(2,3):序列长度3,起始点2
3个素数(2,3,5):序列长度5,起始点2
4个素数(2,3,5,7):序列长度9,起始点2
5个素数(2,3,5,29,31):序列长度13,起始24
6个素数(2,3,5,7,209211):序列长度21,起始点200
7个素数(2,3,5,7,11,2309,2311):序列长度25,起始2298
8个素数(2、3、5、7、11、13、59、30029):序列长度33,起始30014
9个素数(2,3,5,7,11,13,37,41,2179):序列长度39,起始2162
10个素数(2、3、5、7、11、13、17、19、53、347):序列长度45,起始9699668
问题2
问题2本质上是同一个问题的逆问题,该问题要求序列长度为50、100和150所需的最大素数。
以下是读者提供的当前候选人:
序列长度50,起始9699668:11个素数(2,3,5,7,11,13,19,71,195157,195161,195163)提交人哈利亚文
序列长度100,起始74651409074:16个素数(2,3,5,7,11,13,17,19,23,29,31,43,59,257,1523,4831)提交人Rainer aus dem春季
序列长度150,起始11102324540952552:19个素数(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,1051,1047649,2822011)提交人哈利亚文
我很有信心,前两个确实是他们类中正确的最小序列。从哈利亚文对他的方法的描述来看,“波束搜索是为了找到覆盖尽可能多的区间的模块组合,然后是小筛子和覆盖两个以上位置的素数组合的穷尽搜索”,这似乎与上述启发式方法类似,通过计算机搜索增强。因此,在最后一个序列的情况下,可能会发现一个数字较小的序列。
任何人都能做得更好,或者通过野蛮搜索证明不存在低值序列吗?
这个Quanta公司为Prime Rib拼图设计的T恤送给了Rainer aus dem Spring,感谢他做出的许多贡献和坚持。祝贺 你!感谢所有做出贡献的人。很快见,获取新见解。