Écrivez un programme qui prend une entrée (qui peut ou non être un nombre premier) et répertorie le nombre premier immédiat qui le suit et le précède.
Exemple d'entrée:
1259
Exemple de sortie:
1249 1277
Le programme le plus court gagne. Doit s'exécuter dans les 10 secondes sur un PC de bureau moderne. Les entrées seront limitées à 10 000 maximum.
n
pour la primauté en créant une chaîne den
caractères longue et en testant cela contre une expression régulière absolument horrible?Réponses:
Perl 5.10 (perl -E), 65 caractères
La moitié du crédit (au moins) devrait aller à @J B.
la source
qr
, -4 pour ne pas avoir besoin des délimiteurs plus tard).qr
. LMGTFY: 81 caractères$m=$n=<>;$p='^1$|(^11+)\1+$';0while(1x--$m)=~$p;0while(1x++$n)=~$p;print"$m $n$/"
perl -E'$m=<>;for(-1,1){$n=$m;0while(1x($n+=$_))=~q<^1$|(^11+)\1+$>;say$n}'
Mathematica , 19
la source
Mathematica: 28 caractères
Usage
la source
Python - 93
Basé sur la réponse de fR0DDY . J'ai essentiellement fusionné les lignes 4 et 5 et raccourci la ligne 2 en utilisant une méthode différente.
la source
Python
116111109 Caractèresla source
f=lambda n:not(all(pow(b,n-1,n)<2for b in(3,5,7,13)))
n=input()-1
etm=n+2
, enregistre 3 caractères ... je pense.not(all(...))
enany(...)
inversant les booléens108
.J, 22 caractères
la source
Haskell: 99
Exemple
la source
Python, 116
139caractères (le double retrait est tab-char)Utilise un bon tamis d'ératosthène
Modifications et (merci à TON @JPvdMerwe). Devrait fonctionner avec des nombres premiers maintenant.
Original
la source
a=range(9999)
para=range(n)
. Toujours dans la ligne 2, vous n'avez pas besoin de passera
au lambda, vous pouvez simplement l'utiliser. Cela devrait raser beaucoup.Scala 119:
non golfé:
21,2 secondes pour exécuter tous les 9998 pouces de 3 à 10 000
la source
Gelée , 5 octets (non concurrentiel?)
Essayez-le en ligne!
la source
Swift
190187185110Swift est très mauvais en code-golf, mais je l'ai quand même essayé: D
Il devient de plus en plus court ... (Merci à @HermanLauenstein d' avoir supprimé 75 octets)
la source
var a=Int(readLine()!)!;for b in[-1,1]{var n=a,c=0;while c<1{n+=b;c=1;for i in 2..<n{if n%i<1{c=0}}};print(n)}
(je ne l'ai pas encore testé correctement)Python (123)
NOTE: Le
Primes
module a été écrit par moi mais il existait avant que cette question ne soit posée. Il n'a PAS été écrit pour cela. Néanmoins, cela a été jugé injuste, voici donc la version mise à jour.Python (215)
la source
123
Primes
; contre l'esprit du golf de code.Stax , 7 octets
Exécuter et déboguer
Équivalent ASCII:
Intégrés.
la source
JavaScript (Node.js) , 79 octets
Essayez-le en ligne!
la source
C (gcc) , 98 octets
Essayez-le en ligne!
Version complète du programme, C (gcc) , 116 octets
Essayez-le en ligne!
Les deux versions supposent que nous ne testons jamais 1 pour la primauté, ce qui ne se produit que si l'entrée est inférieure ou égale à 2, auquel cas la sortie ne serait de toute façon pas définie.
la source