【Mathematica】寻找可截断的素数

Mathematica官方推出一种铅笔,上面写了一个很大的素数:357686312646216567629137。这个素数有一个特点,就是从左到右去掉前面若干个数字,剩下的数字仍旧是素数。作者在文中还给出了一个寻找这种素数的源代码。本文,先来解读作者给出的代码,并利用这个代码,寻找这一类素数。

4a6d48ee7b7f860e22c69d4777f5ee0d3bcebe0a.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80

工具/原料

  • 电脑
  • Mathematica

方法/步骤

  1. 1

    代码截图如下。

    这是一个自界说函数TruncatablePrimes,其变量是正整数p,要是p不是素数,则返回一个空列表,要是p是素数,就新建一个包罗p的子列表,并在这个子列内外面反复挪用TruncatablePrimes函数,不外呢,此时TruncatablePrimes的变量,酿成了在p的左边添加一个1到9的数字而形当作的新的数字。

    65390a23beb9763e4d71c3656ad06de89b61b00a.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  2. 2

    以数字3末端的截断素数,一共有2127个。

    TruncatablePrimes[3]//Flatten//Length

    e09173e89a6186253320b65b3b04541bd00faa0a.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  3. 3

    以数字3末端的最大截断素数是:

    Max[TruncatablePrimes[3]//Flatten]

    d04eec260d9a310e6d2a919931b842406bfea20a.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  4. 4

    以数字1末端的截断素数,需要分当作五大类来寻找:

    Column[Max[TruncatablePrimes[#]//Flatten]&/@{11,31,41,61,71}]

    6bbfdd14f1c595eec372cf9427530688902c9a0a.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  5. 5

    经由过程列举法可以证实,作者铅笔上的素数是最大的截断素数。

    Max[(TruncatablePrimes[#&/@{3,7,9,11,31,41,61,71})//Flatten]

    b666b2530688912c2279a45b1b4800fc76f7970a.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  6. 6

    不外,作者在原文给出的寻找最大的截断素数的代码是有疏漏的:

    Take[Sort[Flatten[TruncatablePrime/@ Range[9]]], -5]

    由于1默认不是素数,以是把1作为TruncatablePrime的变量,将返回一个空列表。这样导致的后果是,在列举截断素数的时辰,以1末端的截断素数被纰漏了。

    5e615d715fdb36202889b53aabc5260f89358d0a.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80END
  • 发表于 2022-09-05 19:44
  • 阅读 ( 236 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论