Un élément primitif d'un champ fini est un générateur du groupe multiplicatif du champ. En d'autres termes, alpha
in F(q)
est appelé élément primitif s'il est une q−1
racine primitive de l'unité dans F(q)
. Cela signifie que tous les éléments non nuls de F(q)
peuvent être écrits comme alpha^i
pour un entier (positif) i
.
Tous les éléments du champ F_{2^k}
peuvent être écrits sous forme de polynômes de degré au plus k-1
avec des coefficients qui sont soit 1
ou 0
. Pour que cela soit complet, votre code doit également générer un polynôme irréductible de degré k
qui définit le champ que vous utilisez.
La tâche consiste à écrire du code qui génère un élément primitif F_{2^k}
de votre choix pour chacun k = 1 .. 32
dans l'ordre.
Votre sortie doit simplement lister les k
coefficients de l'élément primitif dans n'importe quel format que vous aimez, puis sur une ligne séparée les k+1
éléments du polynôme irréductible. Veuillez séparer les sorties pour chaque valeur de k
si possible.
Votre code peut prendre autant de temps que vous le souhaitez, mais vous devez l'avoir exécuté jusqu'à la fin avant de soumettre votre réponse.
Vous ne pouvez pas utiliser de fonction intégrée ou de bibliothèque qui renvoie des éléments primitifs d'un champ fini ou teste si un élément est primitif.
Un exemple
Car k = 1
le seul élément primitif est 1
.
Car k = 2
nous l'avons F_4
. Les 4 éléments sont {0, 1, x, x + 1}
donc il y a deux éléments primitifs x
et x + 1
. Ainsi, le code pourrait sortir
1 1
1 1 1
comme les coefficients par exemple où la deuxième ligne est le polynôme irréductible qui dans ce cas est celui x^2+x+1
qui a des coefficients 1 1 1
.
Réponses:
Pari / GP , 114 octets
Inspiré par la réponse d' Isaacg dans une autre question.
Essayez-le en ligne!
Si les fonctions intégrées sont autorisées:
Pari / GP , 61 octets (non concurrent)
Essayez-le en ligne!
la source
Mathematica, 127 octets
Explication:
Production:
la source