Un elemento primitivo de un campo finito es un generador del grupo multiplicativo del campo. En otras palabras, alpha
en F(q)
se llama un elemento primitivo si es una q−1
raíz primitiva de la unidad en F(q)
. Esto significa que todos los elementos distintos de cero F(q)
se pueden escribir como alpha^i
para algún entero (positivo) i
.
Todos los elementos del campo F_{2^k}
se pueden escribir como polinomios de grado como máximo k-1
con coeficientes que son 1
o 0
. Para completar esto, su código también necesita generar un polinomio de grado irreduciblek
que defina el campo que está utilizando.
La tarea es escribir código que genera un elemento primitivo F_{2^k}
de su elección para cada uno k = 1 .. 32
en orden.
Su salida simplemente debe enumerar los k
coeficientes del elemento primitivo en cualquier formato que desee y luego, en una línea separada, los k+1
elementos del polinomio irreducible. Separe las salidas para cada valor de k
si es posible.
Su código puede demorar todo el tiempo que desee, pero debe haberlo ejecutado antes de enviar su respuesta.
No puede utilizar ninguna función incorporada o de biblioteca que devuelva elementos primitivos de un campo finito o pruebe si un elemento es primitivo.
Un ejemplo
Porque k = 1
el único elemento primitivo es 1
.
Para k = 2
nosotros tenemos F_4
. Los 4 elementos son {0, 1, x, x + 1}
así que hay dos elementos primitivos x
y x + 1
. Entonces el código podría generar
1 1
1 1 1
como los coeficientes, por ejemplo, donde la segunda línea es el polinomio irreducible que en este caso es el x^2+x+1
que tiene coeficientes 1 1 1
.
Respuestas:
Pari / GP , 114 bytes
Inspirado por la respuesta de Isaac en otra pregunta.
Pruébalo en línea!
Si se permiten incorporados:
Pari / GP , 61 bytes (no competidor)
Pruébalo en línea!
fuente
Mathematica, 127 bytes
Explicación:
Salida:
fuente