Prymitywny elementu skończonego pola jest generatorem multiplikatywna grupa pola. Innymi słowy, alpha
in F(q)
jest nazywany prymitywnym elementem, jeśli jest prymitywnym q−1
korzeniem jedności w F(q)
. Oznacza to, że wszystkie niezerowe elementy F(q)
mogą być zapisane jak alpha^i
dla niektórych (dodatnich) liczb całkowitych i
.
Wszystkie elementy tej dziedzinie F_{2^k}
mogą być zapisywane jako wielomianów stopnia co najwyżej k-1
ze współczynnikami, które są albo 1
albo 0
. Aby to zakończyć, twój kod musi również wygenerować nieredukowalny wielomian stopnia, k
który określa pole, którego używasz.
Zadanie polega na napisaniu kodu, który wyprowadza prymitywny element F_{2^k}
wybrany dla każdego k = 1 .. 32
w kolejności.
Twój wynik musi po prostu wyszczególnić k
współczynniki pierwotnego elementu w dowolnym formacie, który ci się podoba, a następnie w osobnym wierszu k+1
elementy nieredukowalnego wielomianu. Proszę oddzielić wyjścia dla każdej wartości, k
jeśli to możliwe.
Twój kod może trwać tak długo, jak chcesz, ale musisz przesłać go do końca przed przesłaniem odpowiedzi.
Nie możesz używać żadnej funkcji wbudowanej lub biblioteki, która zwraca prymitywne elementy pola skończonego lub testuje, czy element jest prymitywny.
Przykład
Bo k = 1
jedynym prymitywnym elementem jest 1
.
Ponieważ k = 2
mamy F_4
. 4 elementy są {0, 1, x, x + 1}
więc są dwa prymitywne elementy x
i x + 1
. Aby kod mógł zostać wygenerowany
1 1
1 1 1
jako współczynniki, na przykład gdy druga linia jest nieredukowalnym wielomianem, który w tym przypadku x^2+x+1
ma współczynniki 1 1 1
.
Odpowiedzi:
Pari / GP , 114 bajtów
Zainspirowany przez Isaacga na inne pytanie.
Wypróbuj online!
Jeśli wbudowane są dozwolone:
Pari / GP , 61 bajtów (niekonkurencyjne)
Wypróbuj online!
źródło
Mathematica, 127 bajtów
Wyjaśnienie:
Wynik:
źródło