Um elemento primitivo de um campo finito é um gerador do grupo multiplicativo do campo. Em outras palavras, alpha
in F(q)
é chamado de elemento primitivo se for uma q−1
raiz primitiva da unidade em F(q)
. Isso significa que todos os elementos diferentes de zero F(q)
podem ser escritos como alpha^i
para algum número inteiro (positivo) i
.
Todos os elementos do campo F_{2^k}
podem ser escritos como polinômios de grau, no máximo, k-1
com coeficientes que são 1
ou 0
. Para concluir isso, seu código também precisa gerar um polinômio irredutível de grau k
que define o campo que você está usando.
A tarefa é escrever código que gera um elemento primitivo F_{2^k}
de sua escolha para cada um k = 1 .. 32
em ordem.
Sua saída deve simplesmente listar os k
coeficientes do elemento primitivo em qualquer formato que você desejar e, em uma linha separada, os k+1
elementos do polinômio irredutível. Separe as saídas para cada valor, k
se possível.
Seu código pode levar o tempo que você quiser, mas você deve executá-lo até concluir antes de enviar sua resposta.
Você não pode usar nenhuma função interna ou de biblioteca que retorne elementos primitivos de um campo finito ou teste se um elemento é primitivo.
Um exemplo
Pois k = 1
o único elemento primitivo é 1
.
Pois k = 2
nós temos F_4
. Os 4 elementos são {0, 1, x, x + 1}
então existem dois elementos primitivos x
e x + 1
. Então o código pode gerar
1 1
1 1 1
como os coeficientes, por exemplo, onde a segunda linha é o polinômio irredutível que, neste caso, é o x^2+x+1
que possui coeficientes 1 1 1
.
Respostas:
Pari / GP , 114 bytes
Inspirado pela resposta de isaacg em outra pergunta.
Experimente online!
Se built-ins forem permitidos:
Pari / GP , 61 bytes (não concorrente)
Experimente online!
fonte
Mathematica, 127 bytes
Explicação:
Resultado:
fonte