Виведіть примітивний елемент для кожного розміру поля


16

Примітивний елемент кінцевого поля є утворює мультипликативной групи поля. Іншими словами, alphaв 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.


4
Є якісь приклади?
Okx

1
Чи можемо ми також вивести поліноми та / або елементи поля, закодовані як біти цілого числа, яке ми виводимо?
orlp

@orlp Так.

1
Я думаю, що Pari / GP є єдиною мовою, яка має для цього вбудований .
алефальфа

Відповіді:


2

Парі / GP , 114 байт

Натхненний відповіддю isaacg в іншому запитанні.

for(n=1,32,for(i=1,2^n,if(sumdiv(2^n-1,d,Mod(x,f=Mod(Pol(binary(2*2^n-i)),2))^d==1)==1,print([x,lift(f)]);break)))

Спробуйте в Інтернеті!


Якщо вбудовані дозволені:

Парі / GP , 61 байт (неконкурентоспроможний)

for(i=1,32,print([ffprimroot(ffgen(f=ffinit(2,i))),lift(f)]))

Спробуйте в Інтернеті!


4

Математика, 127 байт

Do[For[i=2*2^n,PolynomialMod[x^Divisors[2^n-1]+1,i~IntegerDigits~2~FromDigits~x,Modulus->2]~Count~0!=1,i--];Print@{2,i},{n,32}]

Пояснення:

хн2н-1х2н-1-1хi-1i2н-1

Вихід:

8589934581111111111111111111111111111110101 коли пишеться у двійковій формі, тому вона являє собою многочлен

х32+х31+х30+х29+х28+х27+х26+х25+х24+х23+х22+х21+х20+х19+х18+х17+х16+х15+х14+х13+х12+х11+х10+х9+х8+х7+х6+х5+х4+х2+1

{2,3}

{2,7}

{2,13}

{2,25}

{2,61}

{2,115}

{2553}

{2,501}

{2,1019}

{2,2041}

{2,4073}

{28137}

{2,16381}

{2,32743}

{2,65533}

{2,131053}

{2,262127}

{2,524263}

{2,1048531}

{2,2097145}

{2,4194227}

{28388589}

{2,16777213}

{2,33554351}

{2,67108849}

{2,134217697}

{2,268435427}

{2,536870805}

{2,1073741801}

{2,2147483533}

{2,4294967287}

{2,8589934581}

Це добре. Я з нетерпінням чекаю версії Jelly :)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.