Примитивный элемент конечного поля является образующей мультипликативной группы поля. Другими словами, alpha
in F(q)
называется примитивным элементом, если он является примитивным q−1
корнем единства в F(q)
. Это означает, что все ненулевые элементы F(q)
можно записать как alpha^i
для некоторого (положительного) целого числа i
.
Все элементы поля F_{2^k}
могут быть записаны как полиномы степени не более k-1
с коэффициентами, которые либо 1
или 0
. Чтобы завершить это, вашему коду также нужно вывести неприводимый многочлен степени, k
который определяет поле, которое вы используете.
Задача состоит в том, чтобы написать код, который выводит примитивный элемент F_{2^k}
по вашему выбору для каждого k = 1 .. 32
в порядке.
Ваш вывод должен просто перечислить k
коэффициенты примитивного элемента в любом формате, который вам нравится, а затем в отдельной строке k+1
элементы неприводимого полинома. Пожалуйста, разделите выходы для каждого значения, k
если это возможно.
Ваш код может занять столько времени, сколько вы хотите, но вы должны выполнить его до завершения, прежде чем отправлять свой ответ.
Вы не можете использовать любую встроенную или библиотечную функцию, которая возвращает примитивные элементы конечного поля или проверяет, является ли элемент примитивным.
Пример
Для k = 1
единственного примитивного элемента есть 1
.
Ибо k = 2
у нас есть F_4
. 4 элемента, {0, 1, x, x + 1}
так что есть два примитивных элемента x
и x + 1
. Таким образом, код может выводить
1 1
1 1 1
в качестве коэффициентов, например, где вторая строка является неприводимым многочленом, который в данном случае x^2+x+1
имеет коэффициенты 1 1 1
.