Je suis 2/3 jumeaux avec mon frère, c'est-à-dire né le même jour du même mois mais douze ans plus tard. Quand j'avais 5 ans, il avait 17 ans, les deux premiers; la dernière paire d'âges sur laquelle nous pouvons raisonnablement compter est [71, 83], tous les deux étant vivants et capables de célébrer ce jubilé coïncident.
Tâche
Créez un code qui
prend deux entiers en entrée: la différence entre le compteur et le "jumeau" comme un entier positif k (enfin oui, je suis le plus jeune) et la borne supérieure comme un entier positif u (considération d'exécution)
et donne la sortie sous forme de tableau ou de liste de tous les i nombres inférieurs ou égaux à u pour lesquels i et i + k sont des nombres premiers. La sortie n'a pas besoin d'être triée.
Cas de test
12, 1000 -> [5, 7, 11, 17, 19, 29, 31, 41, 47, 59, 61, 67, 71, 89, 97, 101, 127, 137, 139, 151, 167, 179, 181, 199, 211, 227, 229, 239, 251, 257, 269, 271, 281, 337, 347, 367, 389, 397, 409, 419, 421, 431, 449, 467, 479, 487, 491, 509, 557, 587, 601, 607, 619, 631, 641, 647, 661, 727, 739, 757, 761, 797, 809, 811, 827, 907, 929, 941, 971, 997]
2, 999 -> [3, 5, 11, 17, 29, 41, 59, 71, 101, 107, 137, 149, 179, 191, 197, 227, 239, 269, 281, 311, 347, 419, 431, 461, 521, 569, 599, 617, 641, 659, 809, 821, 827, 857, 881]
3, 1500 -> [2]
30, 1500 -> [7, 11, 13, 17, 23, 29, 31, 37, 41, 43, 53, 59, 67, 71, 73, 79, 83, 97, 101, 107, 109, 127, 137, 149, 151, 163, 167, 181, 193, 197, 199, 211, 227, 233, 239, 241, 251, 263, 277, 281, 283, 307, 317, 337, 349, 353, 359, 367, 379, 389, 401, 409, 419, 431, 433, 449, 457, 461, 479, 491, 541, 547, 557, 563, 569, 571, 577, 587, 601, 613, 617, 631, 643, 647, 653, 661, 709, 727, 739, 743, 757, 797, 809, 823, 827, 829, 853, 857, 877, 881, 907, 911, 937, 941, 947, 953, 967, 983, 991, 1009, 1019, 1021, 1031, 1033, 1039, 1061, 1063, 1087, 1093, 1123, 1151, 1163, 1171, 1187, 1193, 1201, 1229, 1249, 1259, 1277, 1289, 1291, 1297, 1399, 1409, 1423, 1429, 1451, 1453, 1459, 1481, 1493]
Éditer
Comme je n'ai pas précisé la limite supérieure, les solutions inclusives et exclusives sont les bienvenues.
Édition n ° 2
Le défi se termine le 1er septembre, une semaine après le début.
On dirait que nous avons un gagnant, mais en cas d'égalité, c'est le bris d'égalité; dans ce cas, la "seconde" sera compensée par une prime.
Réponses:
Gelée,
87 octetsEssayez-le en ligne!
Explication
la source
Brachylog ,
2723 octetsEssayez-le en ligne!
Vérifiez tous les cas de test.
Prédicat 0 (prédicat principal)
Prédicat 1 (prédicat auxiliaire)
la source
05AB1E , 9 octets
Code:
Utilise l' encodage CP-1252 . Essayez-le en ligne! .
la source
Pyke, 10 octets
Essayez-le ici!
Aussi 10 octets:
Essayez-le ici!
la source
Octave,
3433 octetsla source
MATL , 8 octets
Nous remercions @alephalpha pour son approche , qui m'a aidé à économiser 3 octets
Essayez-le en ligne!
la source
Python 3,
1149290 octetsMerci à @Dennis pour -2 octets
Une fonction qui prend l'entrée via un argument et retourne un ensemble non trié. Ceci est exclusif par rapport à la limite supérieure.
Ceci utilise la méthode dans la réponse de @ xnor ici pour trouver des nombres premiers.
Essayez-le sur Ideone
Comment ça fonctionne
Premier constat
Nous initialisons d'abord une valeur de test
i
et un produitP
comme1
, et une liste de nombres premiersl
comme l'ensemble contenant0
. Ensuite, unewhile
boucle qui teste toutes les valeurs dei
la plage[1, u+k-1]
de primalité est exécutée. L'idée est qu'en multipliantP
pari^2
à la fin de chaque itération, onP
prend la valeur(i-1)!^2
lors du testi
, c'est-à-dire le produit des entiers au[1, i+1]
carré. Le test de primalité réel est ensuite effectué en calculantP mod i
; si cela renvoie zéro, alorsi
ne peut pas être premier car cela implique qu'ili
est divisible par au moins une des valeurs qui composent le produit. Si cela revient1
, alorsi
doit être premier car il n'est divisible par aucune des valeurs du produit. Sii
est premier, il est ajouté àl
, et sinon,0
est ajouté. La mise au carré du produit évite une fausse identification de4
comme premier, et est utile ici car elle garantit que seul0
ou1
sera retourné, permettant de faire le choix de la valeur à ajouter en multipliant simplement le résultat pari
.Identification des nombres premiers «jumeaux»
Nous créons maintenant un ensemble plus complet, contenant tous les éléments de
l-k
, élément par élément. L'intersection de cet ensemble etl
se trouve alors à l'aide de&
, ce qui laisse un ensemble ne contenant que les éléments communs aux deux ensembles. Un certain nombrei
est que dans les deux ensembles si les deuxi
eti+k
sont premiers, ce qui signifie que cela laisse la sortie désirée. Cependant, sik
est premier,0
sera présent dans les deux ensembles, ce qui signifie que cela doit être supprimé avant de revenir.la source
k,u=input();i=P=1;l={0};exec'l|={P%i*i};P*=i*i;i+=1;'*(u+k);print{i-k for i in l}&l
fonctionne pour 83 octets en Python 2. Même en 3, la construction d'un ensemble de cette façon devrait économiser quelques octets.0
de l'ensemble final, car s'ilk
est premier, cela est renvoyé par erreur .R, 98 octets
Non golfé:
la source
CJam, 17 octets
Soit en programme complet:
Essayez-le en ligne!
Ou comme un bloc sans nom:
Essayez-le en ligne!
la source
Java 7,
185175 octetsCode non testé et testé:
Essayez-le ici.
Production:
la source
PARI / GP, 39 octets
la source
Mathematica, 43 octets
Générez tous les nombres premiers inférieurs ou égaux à la limite supérieure. Ajoutez la différence d'âge au résultat. Sélectionnez des nombres premiers parmi eux. Soustrayez la différence d'âge au résultat.
la source
Swift, 142 octets
la source
Perl 6 ,
3937 octetsExplication:
la source
SILOS , 205 octets
Essayez-le en ligne!
Test de primauté par le théorème de Wilson .
la source
En fait , 12 octets
L'entrée est
u
alorsk
. Suggestions de golf bienvenues. Essayez-le en ligne!Ungolfing:
la source
R, 104 octets
Contrairement à l'autre solution R publiée, celle-ci prend les données de stdin.
Non golfé:
la source
Javascript (ES6),
90838075 octetsExemple:
la source
Pyth, 13 octets
Un programme qui prend en entrée une liste du formulaire
[k, u]
et imprime une liste.Essayez-le en ligne
Comment ça fonctionne
la source