Cette question sera un tournant dans la recherche du n
nombre premier th.
Défi
Vous devez écrire un programme qui prendra une entrée n
et sortir le n
nombre premier dont la représentation décimale contient la représentation décimale de n
sous-chaîne.
Confus? Voici quelques exemples.
n=1
Primes: 2, 3, 5, 7, 11
^1 first prime that contains a 1
Output: 11
n=2
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 second prime that contains a 2
Output: 23
n=3
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 ^3 third prime that contains a 3
Output: 23
n=10
Primes: 2, 3, 5, 7, 11, ..., 97, 101, 103, 107, 109, ..., 997, 1009, 1013, 1019, 1021, 1031, 1033
^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 tenth prime that contains a 10
Output: 1033
C'est le code-golf , donc le plus petit nombre d'octets gagne.
Si quelque chose est déroutant, laissez s'il vous plaît un commentaire.
Hot Network Questions
liste.Réponses:
05AB1E , 8 octets
Code:
Explication:
Utilise le CP-1252 codage . Essayez-le en ligne! .
la source
Pyth - 11 octets
Suite de test .
la source
Python 2,
676562 octetsTestez-le sur Ideone .
Comment ça marche
Nous utilisons un corollaire du théorème de Wilson :
En tout temps, la variable p est égale au carré de la factorielle de m - 1 .
Si k <n ,
k/n
donnera 0 et f est appelé récursivement. m est incrémenté, p est mis à jour et k est incrémenté si et seulement si m est un nombre premier qui contient n .Ce dernier est obtenu en ajoutant le résultat de
p%m*(`n`in`m`)
à k . Selon le corollaire du théorème de Wilson, si m est premier,p%m
retourne 1 et sinon, il retourne 0 .Une fois que k atteint n , nous avons trouvé q , le n e premier qui contient n .
Nous sommes dans le prochain appel pendant le contrôle, donc m = q + 1 .
k/n
renverra 1 et les opérateurs au niveau du bit-~
incrémenteront ce nombre une fois pour chaque appel de fonction. Comme il faut q - 1 appels à f pour incrémenter m de 2 à q + 1 , l'appel le plus à l'extérieur de f renverra 1 + q - 1 = q , comme prévu.la source
Bash, 27 octets
primes
vient de bsdgames.Prend l'entrée en tant qu'argument de ligne de commande et sort sur STDOUT.
la source
Gelée , 13 octets
Essayez-le en ligne!
la source
Mathematica, 75 octets
Peut encore être golfable.
la source
Java,
194180173171112 OctetsCode:
Ungolfed:
la source
P {
etString[] s
. Et vous ne donnez actuellement que la sortie10
, mais le défi code-golf consistait à prendre une entréen
et à donner la sortie appropriée en fonction de cette entrée. En outre, cela pourrait vous intéresser: des astuces pour jouer au golf en Java.Ruby,
6261 octetsNécessite le
-rprime
drapeau (+8 octets).la source
Julia,
6160 octetsEssayez-le en ligne!
la source
MATL , 18 octets
Essayez-le en ligne!
Explication
Cela génère des nombres premiers dans l'ordre à l'aide d'une
do...while
boucle. Pour chaque prime, la condition est testée (et la prime est consommée). S'il est satisfait, ce nombre premier est à nouveau placé dans la pile. Le nombre d'éléments dans la pile est utilisé pour compter le nombre de nombres premiers qualifiants que nous avons trouvés. Quand il y en a assez, le dernier est affiché.la source
Pyke, 15 octets
Essayez-le ici!
la source
Bash + coreutils GNU, 66 octets
Contrairement à la solution de @ Doorknob, celle-ci ne nécessite que les éléments installés sur chaque système GNU / Linux:
la source
seq 1e20|factor|grep -Po "(?<=: )\d*$2\d$"|sed $1q\;d
for((...)){
, il doit y avoir un espace ou une nouvelle ligne, donc ce n'est pas grave. Avant la fermeture}
, il doit y avoir une;
ou une nouvelle ligne, donc cela n'a pas d'importance non plus.Perl 6 , 41 octets
Explication:
Tester:
la source
Java 8,
192183181171 octets (programme complet)Essayez-le en ligne.
Explication:
Java 8, 105 octets (fonction lambda)
Essayez-le en ligne.
Comme ci-dessus, mais avec une
n
entrée entière et sans les éléments de classe prolixe.la source
&&
avec&
et retirer?
de votre regexp.&&
et&
pour une raison quelconque ..Clojure, 118 octets
Obtient simplement le nième élément d'une suite infinie paresseuse de nombres qui sont premiers et qui ont
n
une représentation sous forme de chaîne.Vous pouvez l'essayer ici: https://ideone.com/ioBJjt
la source
En fait, 16 octets
Essayez-le en ligne!
Explication:
la source
PowerShell v2 +,
10899 octetsOoof. L'absence de tout type de calcul / vérification prime intégré fait vraiment mal ici.
Prend entrée
$n
, entre dans unefor()
boucle infinie . À chaque itération, nous utilisons unefor
boucle entourant le vérificateur principal de regex de PowerShell (h / t to Martin) pour le transformer en un générateur de nombres premiers en incrémentant$i
chaque fois dans la boucle. (Par exemple, si vous ne faites quefor(){for(;'1'*++$i-match'^(?!(..+)\1+$)..'){$i}}
lancer2, 3, 5, 7...
séparée par des nouvelles lignes).Ensuite, une simple
-like
vérification pour voir si$n
est quelque part$i
, et incrémenter notre compteur$o
. Si nous avons atteint où$n
et$o
sommes égaux, sortie$i
etexit
. Sinon, nous continuonsfor
à chercher le prochain nombre premier et le processus se répète.la source
APL (NARS), 39 caractères, 78 octets
1π est le prochain nombre premier ...; tester:
mais cela a déjà 20 ans sort de la pile ... Au lieu de cela, ça semble correct même si la longueur est un peu plus longue (61 caractères)
la source
Ajouter ++ , 36 octets
Essayez-le en ligne!
Assez inefficace. Itère sur chaque entierje tel que i ≤ 25 x2 et filtre les composites et les nombres premiers qui ne contiennent pas n . Enfin, nous prenons len e valeur des entiers restants.
la source
Japt
-h
,151311 octetsL'essayer
la source