Формул Виета хватит.
Заинтриговали. Расскажите, как с помощью формул Виета сварганить эту прорву неприводимых многочленов.
Привожу maple-код:
Код:
F:=GF(3,6,alpha^6+alpha^5+2);
6 5
F := Z[3] [alpha] / <alpha + alpha + 2>
> a:=F:-ConvertIn(alpha);
a := alpha
> F:-isPrimitiveElement(a);
true
> S:={}:for i to 728 do S:=S union {F:-`^`(a,i)} od:
Построили поле из
элементов. Для этого понадобился один неприводимый полином 6-й степени. Но, во-первых, один - не 116. А во-вторых, можно вызывать модуль GF и без 3-го параметра (тогда maple сам подыщет полином). Далее, проверили, что
- порождающий мультипликативной группы, и поместили все ненулевые элементы во множество S.
Теперь разобьем S на циклы. Каждый цикл содержит корни одного и того же неприводимого полинома (поскольку возведение в степень переводит элементы конечного поля характеристики
в сопряженные).
Код:
> k:=0:while S<>{} do
> b:=op(1,S): C:=[b]:c:=b:
> do c:=F:-`^`(c,3):S:=S minus {c}:
> if c=b then break else C:=[op(C),c] fi od:
> if nops(C)=6 then k:=k+1:C||k:=C fi od:
Остается для циклов длины 6 (они лежат в C1 - С116) воспользоваться формулами Виета.