Étant donné un grand nombre (en base 10), tel que 1234567891011121314151617, y trouver des "sous-numéros" principaux.
Un "sous-numéro" premier est une séquence consécutive de chiffres (tirés de l'entrée), qui représente un nombre premier (en base 10).
- Entrée : un nombre (soit une chaîne, un fichier ou tout ce que vous voulez).
- Sortie : tous les sous-nombres principaux sont séparés d'une manière ou d'une autre (soit dans une liste, un fichier, des chaînes séparées par des virgules ...) Si le résultat est vide, vous pouvez prendre toutes les conventions que vous souhaitez (chaîne codée en dur, chaîne vide, charabia, mais le programme ne doit pas crash.
- Exemple
1234 -> 2, 3, 23
6542 -> 5, 2
14 -> [.. sortie vide]
C'est du code-golf. Le programme le plus court gagne!
[modifier]: règle supplémentaire, le programme doit être expliqué! Tout le monde ne parle pas couramment Jelly :)
Réponses:
05AB1E (hérité) , 3 octets
Essayez-le en ligne!
Sous-chaînes de l'entrée qui sont premières.
la source
Perl 6 , 28 octets
Essayez-le en ligne!
L'
:ex
indicateur ("exhaustif") de l'opérateur de correspondance luim
fait renvoyer toutes les correspondances possibles.+
(c'est-à-dire, chaque sous-chaîne d'un ou plusieurs caractères), même celles qui se chevauchent. L'hyperopérateur+«
transforme cette liste d'Match
objets en nombres, qui sont ensuite filtrés par ordre de primautégrep &is-prime
.la source
{+«m:ex/(.+)<?{$0.is-prime}>/}
Brachylog , 4 octets
-1 octet grâce à Kroppeb .
Essayez-le en ligne!
ᶠ
dans toutes less
cordes,ˢ
élisez lesṗ
rimesla source
sᶠṗˢ
est un octet plus court. Il trouve toutes les sous-chaînes et renvoie celles qui sont premières. Voir ici codegolf.stackexchange.com/a/117871/81957Python 2 ,
6665 octetsEssayez-le en ligne!
la source
while k<=n
ou, pour coûter 0 octet,while~n+k
while
déclaration? Je n'ai jamais vu ce type de codes auparavant. Je n'ai pas non plus vu l'utilisation de `` , que fait-il?while stmt:
s'exécutera tant qu'ilstmt
aura une valeur considérée comme véridique par python. Le seul entier faux en Python est0
. Par conséquent, le code s'exécutera en tant que~n+k != 0
.~
est l'opérateur de complément au niveau du bit et~n
est équivalent à-n - 1
.~n + k != 0
<=>-n - 1 + k != 0
<=>k != n + 1
. Comme nous Incrémentationk
par1
dans chaque opération,k != n + 1
est dans ce cas équivalent àk <= n
.`n`
est le même qu'enrepr(n)
Python 2. (ne fonctionne pas en Python 3).Japt ,
1310 octetsMerci @Shaggy -3 octets
Essayez-le en ligne!
la source
Gelée ,
54 octets-1 merci à Kevin Cruijssen (
Ẓ
est un alias pourÆP
)Un lien monadique acceptant une liste de chiffres * qui donne une liste d'entiers premiers.
* en utilisant "soit une chaîne, un fichier ou tout ce que vous voulez" - pour prendre un entier, préfixez le code avec un
D
Essayez-le en ligne!
Comment?
la source
ÆP
peut êtreẒ
si je ne me trompe pas?Java 8,
148147 octetsEssayez-le en ligne.
Explication:
la source
MATL , 9 octets
Essayez-le en ligne!
Explication
la source
Utilitaires Bash + GNU Core:
8077 octetsCela ne peut pas être le plus court, mais j'ai du mal à trouver quoi que ce soit de mieux. Demander de l'aide!
En ne m'en tenant qu'à POSIX, j'en ai obtenu 82:
la source
R , 60 octets
Essayez-le en ligne!
Pas vraiment efficace, inspiré par la réponse @ovs python 2
la source
Python 2 ,
115114 octetsEssayez-le en ligne!
la source
if~-n*all(n%i for i in range(2,n))
enregistre 4.Husk , 5 octets
Essayez-le en ligne!
la source
Nettoyer , 108 octets
Essayez-le en ligne!
la source
Pyth, 8 octets
Suite de tests
Prend l'entrée sous forme de chaîne, affiche une liste d'entiers. Peut également prendre une entrée
Explication:int
en ajoutant`
à la fin pour un octet supplémentaire.Et
`
se convertit simplementint
enstr
.la source
Wolfram Language (Mathematica) , 40 octets
Essayez-le en ligne!
L'entrée et la sortie sont des listes de chiffres. Dans le cas où il n'y a pas de sous-nombres premiers, la liste vide
{}
est renvoyée.Utilise
@*
pourComposition
des fonctions.Subsequences
donne une liste de toutes les sous-séquences de l'entrée, etSelect[PrimeQ@*FromDigits]
est une forme d'opérateurSelect
dont retourne une liste de tous les éléments pour lesquelsPrimeQ@*FromDigits
retourneTrue
.la source
Matlab, 89 octets
Essayez-le en ligne!
la source