Eh bien, le bibliothécaire vous a surpris en train de tromper votre travail en utilisant votre algorithme de tri , alors maintenant vous êtes puni. On vous a ordonné de créer du code afin que le bibliothécaire puisse impressionner l'objet de leur affection non partagée, le professeur de mathématiques. Voilà donc ce que signifie "Autres tâches assignées" ...
Tout le monde connaît la séquence de nombres naturels en base 10, appelée N :
0, 1, 2, 3, 4, 5, 6, ...
À partir de cela, nous pouvons générer la séquence de nombres premiers, appelons-la P , de sorte que chaque élément de P a exactement deux diviseurs dans N , à savoir 1
et lui-même. Cette séquence est:
2, 3, 5, 7, 11, 13, ...
OK, jolie routine jusqu'à présent.
Le bibliothécaire a pensé à une fonction astucieuse F (x, y) qui prend un nombre x
de N , avec la condition 0 <= x <= 9
, et un nombre y
de N , et insère x
dans y
l'expansion décimale de 'dans chaque position (c'est-à-dire, en ajoutant, en insérant ou en ajoutant x
dans y
), puis renvoie l'ensemble trié de nouveaux numéros.
Par exemple, F (6, 127) entraînerait
1267, 1276, 1627, 6127
C'est quand même un peu ennuyeux. Le bibliothécaire veut pimenter un peu plus les choses en spécifiant une nouvelle fonction z -> {p : p in P and F(z,p) subset of P}
, triée par ordre croissant.
Par exemple, z (7) serait
3, 19, 97, 433, 487, 541, ...
parce que 37
et 73
sont tous les deux premiers, 719
179
et 197
sont tous premiers, etc.
Notez que z (2) est vide, car aucun nombre premier auquel est 2
ajouté ne sera toujours premier. De même pour {0,4,5,6,8}.
Votre tâche consiste à écrire du code qui générera et produira les 100 premiers nombres dans la séquence z (x) pour un x donné .
Contribution
Un seul entier x tel que 0 <= x <= 9
. L'entrée peut se faire via un argument de fonction, STDIN ou équivalent.
Production
Une séquence des 100 premiers nombres, délimités par votre choix, à STDOUT ou équivalent, de telle sorte que la séquence satisfait z (x) comme décrit ci-dessus. Si z (x) est vide, comme c'est le cas pour {0,2,4,5,6,8}, les motsEmpty Set
doivent être sortis à la place.
Restrictions
- Il s'agit de code-golf, car vous devrez le transcrire sur une fiche afin que le bibliothécaire puisse montrer le professeur de mathématiques et vos crampes à la main facilement.
- Des restrictions standard contre les échappatoires s'appliquent. Le bibliothécaire ne tolère pas les tricheurs.
Séquences de référence
x = 1: A069246
x = 3: A215419
x = 7: A215420
x = 9: A215421
En relation: Trouver le plus grand nombre premier fragile / Trouver le plus petit nombre premier d'une sous - chaîne / Trouver le plus grand nombre premier qui est toujours un nombre premier après la suppression des chiffres
"
est inutile, très beau travail cependant.Python 3, 188 octets
Mal joué au golf, mais voici quelque chose pour l'instant. Au lieu de vérifier
p in P and F(z,p) subset of P
, nous vérifions qu'ilp*f
s'agit d'un semi-prime pour chacunf in F(z,p)
. Combinez cela avec la division d'essai pour les tests de primalité, et vous obtenez unO(scary)
algorithme.la source
O(scary)
Perl, 124 octets
Nécessite l'option de ligne de commande suivante:,
-palMntheory=:all
compté comme 16. Entrée provenant de stdin.Utilise le module de @DanaJ
Math::Prime::Util
pour perl (chargé avec le pragmantheory
). Obtenez-le avec:is_prime
est déterministe pour toutes les valeurs inférieures à 2 64 , ce qui est suffisant pour nos besoins.Exemple d'utilisation
Temps d'exécution attendus
x = 1 : 1 m 09,2 s
x = 3 : 0 m 04,2 s
x = 7 : 2 m 52,5 s
x = 9 : 0 m 11,5 s
la source
Pyth, 58
Cette suite de tests ne calcule que les 10 premiers nombres car il faut beaucoup trop de temps pour générer le reste. La brutalité force à la fois la primauté et l'insertion des chiffres. Démontre de si mauvaises performances que je n'ai pas pu l'exécuter jusqu'à 100, alors dites-moi s'il y a des problèmes.
la source