有没有这样一个质数,去掉一位后也是质数,再去掉一位后又是质数,直到只剩一位数还是质数?

有没有这样一个质数,去掉一位后也是质数,再去掉一位后又是质数,直到只剩一位数还是质数?

章彦博,云行雨施,品物流形

先考虑最简单的情况,只从右边增加数字

由于每一层都是质数,所以我们可以从基本的质数开始,构造一个「质数池」。每次从池中取出一个质数,增加一位数字,看看哪个是质数。是的话就扔到质数池中。

这样不断迭代,就可以获得很多这样的数。这种迭代过程也很明显会产生一个树形结构:

Mathematica 代码如下:

LongerPrime[n_] := Select[Table[10 n + i, {i, 0, 9}], PrimeQ]

current = {0};
tree = {};
Do[
 next = LongerPrime /@ current; 
 tree = Flatten[tree~Join~(Thread /@ Thread[current -> next])];
 current = Flatten@next;
 , 13]

g = Graph[tree /. {0 -> "root"}, VertexLabels -> "Name", 
  GraphLayout -> "LayeredEmbedding"]

这样的质数数量有限,只有 83 个。

或者也可以只从左边增减数字

修改代码:

LongerPrime[n_] := 
 Select[Table[
   FromDigits@
    Insert[Piecewise[{{{}, n == 0}, {IntegerDigits[n], True}}], i, 
     1], {i, 1, 9}], PrimeQ]

跑四层:

跑 24 层之后就不会有新的素数了,一共 4260 个:

太多就不标数字了

再考虑更复杂的情况——可以在任意位置增加质数

我们需要修改 LongerPrime 函数:

LongerPrime[n_] := 
 Select[Flatten[
   Table[
     FromDigits@Insert[IntegerDigits[n], v, i], {v, 1, 9}, {i, 1, 
      Length[IntegerDigits[n]] + 1}]~Join~
    Table[
     FromDigits@Insert[IntegerDigits[n], 0, i], {i, 2, 
      Length[IntegerDigits[n]]}]], PrimeQ]

数量多了很多,而且也不是树的结构了。

但如果把题主的意思理解为「去掉任意一位之后,剩下的还是素数,而且仍然具有这个性质,直到一位」。那这样的数就很少了。同样用迭代的方法搜索,我们还要求新搜到的数字,丢掉任意一位之后,都已经包含在之前搜到的数字集合中了。我们需要这样修改代码:

除了个位数,只有 23、53、73、37 四个数字符合要求。