La séquence
Tout le monde sait que le seul nombre premier pair est 2
. Ho-hum. Mais, il existe certains nombres pairs n
où, lorsqu'ils sont concaténés avec n-1
, ils deviennent un nombre premier.
Pour commencer, 1
n'est pas dans la liste, car 10
n'est pas premier. De même avec 2
( 21
) et 3
( 32
). Cependant, 4
fonctionne parce que 43
est premier, c'est donc le premier nombre de la séquence a(1) = 4
. Le nombre suivant qui fonctionne (ni 6
( 65
) ni 8
( 87
) ne fonctionne) est 10
, car 109
est premier, donc a(2) = 10
. Ensuite, nous sautons un tas de plus jusqu'à ce que 22
, parce que 2221
c'est premier, donc a(3) = 22
. Etc.
Évidemment, tous les termes de cette séquence sont pairs, car tout nombre impair n
lorsqu'il est concaténé n-1
devient pair (comme 3
se transforme en 32
), qui ne sera jamais premier.
Il s'agit de la séquence A054211 sur OEIS.
Le défi
Étant donné un nombre d'entrée n
qui s'inscrit quelque part dans cette séquence (c'est-à-dire, n
concaténé avec n-1
est premier), sortez sa position dans cette séquence. Vous pouvez choisir entre 0 ou 1, mais veuillez indiquer lequel dans votre soumission.
Règles
- L'entrée et la sortie peuvent être supposées correspondre au type d'entier natif de votre langue.
- L'entrée et la sortie peuvent être données dans n'importe quel format pratique .
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Exemples
Les exemples ci-dessous sont indexés 1.
n = 4
1
n = 100
11
n = 420
51
la source
n
est toujours le seul nombre premier divisible parn
. Ce n'est pas spécial - c'est comme ça que les nombres premiers fonctionnent.Réponses:
Gelée ,
87 octetsUn lien monadique prenant un membre de séquence et renvoyant son index dans la séquence.
Essayez-le en ligne!
Comment?
la source
zip(head(), pop())
truc est vraiment cool. :)Haskell ,
807570 octets5 octets d'économie grâce à Laikoni
Essayez-le en ligne!
la source
p x=all((>0).mod x)[2..x-1]
qui échoue pour 1, mais cela ne devrait pas avoir d'importance dans ce cas.show x++show(x-1)
Peut également être raccourcishow=<<[x,x-1]
.show
pourrait être fait dans une méthode plus courte mais je n'ai pas pensé à une carte de concaturation pour une raison quelconque.Gelée ,
12, 10, 8 octetsEssayez-le en ligne!
1-2 octets enregistrés grâce à @ nmjmcman101, et 2 octets enregistrés grâce à @Dennis!
Explication:
la source
05AB1E ,
987 octetsCode
Utilise l' encodage 05AB1E . Essayez-le en ligne!
Explication
la source
'0-1'
c'est premier.Décortiquer ,
131110 octets1
- solution indexée:Essayez-le en ligne!
Non golfé / Explication
Merci @Zgarb pour les
-3
octets!la source
£İp
est équivalent àṗ
. Vous pouvez également enregistrer un octet avec#…ḣ
au lieu de£f…N
.Python 2 , 87 octets
-2 octets grâce à @officialaimm . 1 indexé.
Suite de tests.
la source
Pyth , 12 octets
Essayez-le en ligne! ou Vérifiez tous les cas de test.
Comment?
la source
Japt ,
1514121198 octets1 indexé.
Essayez-le
la source
Æ
etÇ
?! Merci, @Oliver; Je mettrai à jour quand je reviens à un ordinateur.2o+X
(avec un espace de fin) fonctionnerait à la place de[XXÉ]
, bien que si je me tournais vers les[]
crochets d' équilibrage automatique, votre solution serait un octet plus courte. (En fait 2, puisque vous pourriez alors le faireõ_ZÉ]¬nÃèj
)[]
! : DRöda , 73 octets
Essayez-le en ligne!
1 indexé. Il utilise le flux pour faire des entrées et des sorties.
Explication:
la source
Pyth , 14 octets
Essayez-le en ligne!
Explication
la source
lfTmP_s+`d`tdS
, il est regrettable que je n'aie pas trouvé votre truc par moi-même à ce moment :)Perl 6 , 45 octets
Essayez-le en ligne!
Le
grep
produit la séquence de nombres qualifiés, puis nous recherchons la clé (:k
) (c'est-à-dire, l'index) dufirst
nombre dans la liste qui est égal au paramètre d'entrée$_
.la source
C,
9994 octets1 indexé. Cela me fait mal d'écrire des tests de primalité qui sont si inutiles en termes de calcul, mais les octets sont après tout des octets.
Si nous autorisons des choses vraiment fragiles, la compilation sur ma machine sans optimisation avec GCC 7.1.1 fonctionne sur les 94 octets suivants (merci @Conor O'Brien )
sinon ces 99 octets beaucoup plus robustes font le travail
Programme complet, un peu plus lisible:
la source
n=c;
place dereturn c;
:i,c,m,k;f(n){c=i=1;for(;++i<n;c+=m==k){for(k=m=1;m*=10,m<i;);for(m=i*m+i-1;++k<m&&m%k;);}n=c;}
JavaScript (ES6),
49 4847 octets1 indexé. Limité par la taille de la pile d'appels de votre moteur.
Essayez-le en ligne!
la source
Mathematica, 77 octets
la source
QBIC , 25 octets
Explication
Cela utilise quelque chose de mathématique assez impliqué avec une conversion en chaîne giflée pour faire bonne mesure. Faire un chapeau de version ne fait que la concaténation basée sur des chaînes est un octet de plus:
la source
PHP , 203 octets
Essayez-le en ligne!
Utilise un index basé sur 1 pour la sortie. Le lien TIO contient la version lisible du code.
la source
Rubis , 42 + 9 = 51 octets
Utilise le
-rprime -n
drapeaux. 1 indexé.Fonctionne en comptant tous les nombres égaux ou inférieurs à l'entrée qui remplissent la condition (ou plus techniquement, tous les nombres qui remplissent la
n-1
condition). Puisque l'entrée est garantie dans la séquence, il n'y a aucun risque d'erreur d'une entrée aléatoire comme7
celle-ci qui ne "devient pas principale".Essayez-le en ligne!
la source
Rubis , 62 octets
Essayez-le en ligne!
1 indexé
la source
Python 2 , 85 octets
1 indexé
Tester
Amélioration de la réponse de M. Xcoder
la source
Java 8, 108 octets
0 indexé
Explication:
Essayez-le en ligne.
la source
Stax , 10 octets
1- Indexé
Exécuter et déboguer Explication
la source
Tidy , 33 octets
Essayez-le en ligne!
Explication
L'idée de base est de créer une séquence de nombres valides puis de renvoyer une fonction d'index au curry.
la source