Amorcer un monde vierge

11

Fortement inspiré par la programmation d'un monde vierge . Également étroitement lié à ce défi .


Définissons un premier vierge comme un nombre qui est lui-même premier, mais ne sera plus premier si vous supprimez toute sous-chaîne contiguë de N base 10 chiffres, où 0 < N < digits in number.

Par exemple, 409 est un nombre premier vierge, car 409 lui-même est premier, mais tous les nombres résultant de la suppression d'une sous-chaîne de 1 chiffre ne sont pas premiers:

40
49
09 = 9

et tous les nombres résultant de la suppression de sous-chaînes de longueur 2 ne sont pas premiers:

4
9

D'un autre côté, le nombre premier 439 n'est pas vierge. La suppression des différentes sous-chaînes entraîne:

43
49
39
4
9

Alors que 49, 39, 4 et 9 ne sont pas tous des nombres premiers, 43 est premier; ainsi, 439 n'est pas vierge.

2, 3, 5 et 7 sont trivialement vierges, car aucune sous-chaîne ne peut être supprimée.

Défi

Votre défi est de créer un programme ou une fonction qui accepte un entier positif N et génère le Nième nombre premier. Le code devrait se terminer en moins d'une minute sur n'importe quel PC moderne pour toute entrée jusqu'à 50.

Le code le plus court en octets gagne.

À titre de référence, voici les 20 premiers nombres premiers vierges:

N    Pristine prime
1    2
2    3
3    5
4    7
5    11
6    19
7    41
8    61
9    89
10   409
11   449
12   499
13   821
14   881
15   991
16   6299
17   6469
18   6869
19   6899
20   6949

Voici une liste complète des nombres premiers vierges jusqu'à 1e7, ou N = 376.

Enfin, voici deux entrées OEIS liées:

  • A033274 : très similaire, mais généré en conservant les sous-chaînes au lieu de les supprimer.
  • A071062 : étrangement similaire, mais généré de manière très différente.
ETHproductions
la source

Réponses:

5

Pyth, 29 octets

e.f>}ZPZsmq1lPs.D`Z}Fd.CU`Z2Q

Golf, explication, etc. à suivre.

isaacg
la source
4

CJam, 51 octets

1ri{{)_mp1$s_,)2m*{:>},\f{\~2$<@@>+0e|imp}1b!&!}g}*

Juste un premier passage, cela peut probablement être beaucoup amélioré.

Testez-le ici.

Martin Ender
la source
3

Japt, 61 octets

$while(V<U)T$°,W=Ts ,Tj «Wl o d@1o1-X+Wl)dZ{WjYZ n j} } ©V°;T

Essayez-le en ligne!

C'est dommage que je n'ai pas encore implémenté de boucles dans Japt, sinon ce serait un peu plus court. Toujours au golf ...

ETHproductions
la source