Dans ce défi posé par xnor, on nous a demandé d'implémenter la multiplication XOR. Dans ce défi, l'objectif est de trouver les premiers n
nombres premiers XOR. Les nombres premiers XOR sont très similaires aux nombres premiers réguliers comme vous pouvez le voir par les définitions suivantes:
Définition du nombre premier: un nombre positif supérieur à 1 qui ne peut être formé par la multiplication de deux nombres que par la multiplication de 1 et de lui-même.
Définition de XOR Prime: Un nombre positif supérieur à 1 qui ne peut pas être formé par la multiplication XOR de deux nombres, sauf par la multiplication XOR de 1 et lui-même. Notez que les nombres premiers XOR composent la séquence Oeis A014580 .
La multiplication XOR est définie comme une multiplication binaire longue sans transport. Vous pouvez trouver plus d'informations sur la multiplication XOR dans le défi xnor .
Contribution:
Un entier n
.
Production:
Les premiers n
nombres XOR premiers.
Voici les nombres premiers XOR inférieurs à 500:
2 3 7 11 13 19 25 31 37 41 47 55 59 61 67 73 87 91 97 103 109 115 117 131 137 143 145 157 167 171 185 191 193 203 211 213 229 239 241 247 253 283 285 299 301 313 319 333 351 355 357 361 369 375 379 391 395 397 415 419 425 433 445 451 463 471 477 487 499
F_2[x]
.Réponses:
Pyth, 26 octets
Manifestation
Pour tester si un nombre est un nombre XOR premier, nous générons la table de multiplication complète jusqu'à ce nombre en utilisant l'algorithme d' ici , puis comptons le nombre de fois où ce nombre apparaît. Si c'est exactement 2, le nombre est premier.
Ensuite,
.f
retourne les n premiers nombres premiers.la source
Mathematica,
10099 octetsComme l'a noté xnor, la multiplication XOR est juste une multiplication dans l'anneau polynomialF2[ x ] .
la source
Pari / GP , 74 octets
Enregistré 4 octets grâce à Charles .
Comme l'a noté xnor, la multiplication XOR est juste une multiplication dans l'anneau polynomialF2[ x ] .
Essayez-le en ligne!
Fondamentalement, la même chose que ma réponse Mathematica , mais PARI / GP a des noms de fonction plus courts.
la source
n->p=0;while(n,if(polisirreducible(Mod(Pol(binary(p++)),2)),print(p);n--))
.Ceylan, 166 octets
Bien sûr, cela ne peut pas rivaliser avec Pyth & Co ...
Formaté:
Cela crée un itérable infini d'entiers (commençant par 2), le filtre en vérifiant si un nombre est un nombre XOR premier et en prend les premiers
n
éléments.Ce filtrage fonctionne en bouclant sur tous les éléments de 2 à m-1 (qui sont m-2) et en vérifiant chaque paire si le produit xor donne
m
. Si l'itérable créé par celui-ci est vide,m
est un xor-prime, et donc inclus.Le produit xor lui-même est calculé en utilisant le même algorithme (et presque le même code) que dans ma réponse pour le calcul du produit XOR .
la source
Julia, 116 octets
La fonction principale est la fonction anonyme sur la deuxième ligne. Il appelle une fonction d'aide
f
(qui est d'ailleurs ma soumission pour le défi de xnor).Non golfé:
la source