Problème
Le but est, comme le dit le titre, de trouver le nième nombre premier tel que le nombre premier - 1 soit divisible par n.
Explication
Voici un exemple pour que vous compreniez bien la question, ce n’est pas nécessairement la façon dont elle devrait être résolue. C'est simplement comme un moyen d'expliquer la question
étant donné 3 comme entrée, nous examinons d’abord tous les nombres premiers
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 ...
Ensuite, nous sélectionnons les nombres premiers tels que le nombre premier - 1 soit divisible par n (3 dans ce cas)
7 13 19 31 37 43 61 67 73 79 97 103 107 109 127 ...
Nous sélectionnons ensuite le nième terme de cette séquence
Nous produirions 19 pour une entrée de 3
Remarque
Nous pouvons aussi penser à cela comme au nième nombre premier de la suite {1, n + 1, 2n + 1, 3n + 1 ... kn + 1} où k est un nombre naturel quelconque
Cas de test
1 --> 2
2 --> 5
3 --> 19
4 --> 29
100 --> 39301
123 --> 102337
code-golf
number
number-theory
primes
Ando Bando
la source
la source
Réponses:
05AB1E ,
9 à8 octets05AB1E utilise le codage CP-1252 .
Enregistré un octet grâce à Osable
Essayez-le en ligne!
Explication
la source
µN¹*>Dp½
ce qui enregistre un octet et accélère le calcul.Python 2, 58 octets
la source
Mathematica, 48 octets
Fonction sans nom prenant un seul argument, qu’elle nomme
n
. Génère une liste des premiersn^3
premiers, sélectionne ceux qui sont congruents à 1 modulon
, puis prend len
e élément du résultat. Il s'exécute en quelques secondes sur l'entrée 123.À l'heure actuelle, on ne sait pas s'il y a toujours un seul nombre premier, parmi les premiers
n^3
premiers, qui est congruent à 1 modulon
, et encore moinsn
. Cependant, l'algorithme peut être prouvé correct (au moins pour les grandsn
) sous l'hypothèse de l' hypothèse généralisée de Riemann !la source
Haskell,
5947 octetsExemple d'utilisation:
f 4
->29
.Comment ça marche:
Edit: Merci @ Damien pour 12 octets en supprimant le test de divisibilité et en ne regardant que les multiples en premier lieu.
la source
f n=[p|p<-[1,n+1..],all((<2).gcd p)[2..p-1]]!!n
Gelée , 9 octets
Essayez-le en ligne!
Comment ça marche
la source
Java 7, 106 octets
Ungolfed:
Code de test:
Essayez-le ici (les résultats du dernier test dans un délai dépassé sur idéone)
Sortie:
la source
System.out.println
sont généralement ajoutés pour que vous puissiez voir quelle entrée j'ai utilisée pour afficher la sortie affichée. Tout est également indiqué au cas où quelqu'un voudrait le copier-coller dans son IDE pour jouer.Nasm 679 octets (Instruction Intel 386 unités de traitement 120 octets)
c'est un non-golf et les résultats
la source
En fait , 13 octets
Suggestions de golf bienvenues! Essayez-le en ligne!
Ungolfing
la source
Common Lisp, 162 octets
Usage:
Ungolfed:
Certaines de ces
loop
constructions peuvent probablement être raccourcies endo
boucles, mais c'est ce que j'ai pour le moment.la source
MATL , 12 octets
Essayez-le en ligne!
(Pour l'entrée,
123
le délai est écoulé dans le compilateur en ligne, mais cela fonctionne hors ligne.)Explication
la source
Perl,
7776 + 1 = 77 octetsUtilise la regex prime-testing pour déterminer s'il
$p
est premier et s'assure qu'il est congruent à 1 mod l'entrée (les seuls entiers non négatifs inférieurs à 2 sont 0 et 1, mais il ne peut pas être 0 s'il est premier, il doit donc be 1. enregistre 1 octet de plus==1
).la source
(1 x++$.)!~/^(11+?)\1+$/&&($.%$_<2)&&push@a,$.while@a<$_;say$a[-1]
(c’est ce dont je parlais dans mon précédent commentaire). Cependant, la sortie (de chaque version) semble fausse pour au moins 2 et 3 ...Mathematica 44 octets
Très vite. Utilise l'idée de la "note"
Sortie
la source
Perl 6 ,
46 3937 octetsla source
Java 8, 84 octets
Golfé
Ungolfed
Explication
Solution inspirée par plusieurs autres réponses. Function est un lambda qui attend un seul int.
le
n>1?i:2
un bidouillage pas cher parce que je ne pouvais pas trouver un meilleur moyen de considérer le cas de n = 1.En outre, cette solution arrive à expiration sur Ideone, mais a été testée pour tous les cas de test. Il expire car, afin de gagner quelques octets, j'ai retiré la
j<i
vérification explicite de la boucle interne. C'est surtout impliqué pari%j>0
... sauf dans le cas dei=1
etj=2
(la toute première itération), auquel cas la boucle s'exécute jusqu'à ce que j déborde (je suppose). Ensuite, cela fonctionne bien pour toutes les itérations après.Pour une version qui n'expire pas, cela ne prend que quelques octets de plus, voir ici!
la source
Raquette 109 octets
Ungolfed:
Essai:
Sortie:
la source
Ruby 64 octets
Appelé comme ça:
En outre, cette application en ligne de commande fonctionne:
appelé comme ça
mais je ne sais pas trop comment compter les personnages. Je pense que je peux ignorer le nom de la langue, mais que je dois inclure l’
-rprime
espace et avant le nom du script, ce qui est légèrement plus court, à 63. . .la source
R, 72 octets
Terriblement inefficace et lent mais ça marche. Il lit les entrées de stdin puis utilise la
isPrime
fonction dunumbers
paquet pour trouver les nombres premiers. Le reste ne fait que vérifier siprime - 1
est divisible parn
.la source
JavaScript (ES6), 65 octets
Utilise le testeur de primalité regexp, car il est a) inférieur de 8 octets et b) moins récursif que mon approche purement récursive.
la source
Axiome 64 octets
quelqu'un sait-il comment écrire ci-dessus à l'aide des flux Axiom? ... un exemple
Type: Tuple NonNegativeInteger
la source