输出每个字段大小的原始元素


16

本原元素的有限域的是该领域的乘法群的生成元。换句话说,如果alphain F(q)是in的q−1第1个单位根,则in 被称为基本元素F(q)。这意味着可以将所有非零元素F(q)写成alpha^i某个(正)整数i

该字段的所有元素F_{2^k}最多可以写为度为多项式,k-1系数为10。为了完成此操作,您的代码还需要输出一个不可约的次数多项式k多项式定义了您正在使用的字段。

任务是编写代码,该代码按顺序输出F_{2^k}您选择的原始元素k = 1 .. 32

您的输出必须简单地k以您喜欢的任何格式列出原始元素的系数,然后在另一行上单独列出k+1不可约多项式的元素。k如果可能,请为每个值分开输出。

您的代码可能需要很长的时间,但是在提交答案之前,必须先运行它才能完成。

您不得使用任何内置函数或库函数来返回有限域的原始元素或测试元素是否为原始。

一个例子

因为k = 1唯一的原始元素是1

因为k = 2我们有 F_4。这4个元素是,{0, 1, x, x + 1}因此有两个基本元素xx + 1。所以代码可以输出

1 1
1 1 1

例如作为系数,其中第二行是不可约多项式,在这种情况下,该多项式x^2+x+1具有系数1 1 1


4
有任何例子吗?
Okx

1
我们是否还可以输出编码为我们输出的整数位的多项式和/或字段元素?
orlp

@orlp是的,绝对是。

1
我认为Pari / GP是唯一为此内置的语言。
alephalpha

1
@Lembik好的。在线尝试!
alephalpha

Answers:



4

Mathematica,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}]

说明:

Xñ2ñ-1个X2ñ-1个-1个X一世-1个一世2ñ-1个

输出:

8589934581111111111111111111111111111110110101 用二进制编写时,因此表示多项式

X32+X31+X30+X29+X28+X27+X26+X25+X24+X23+X22+X21+X20+X19+X18+X17+X16+X15+X14+X13+X12+X11+X10+X9+X8+X7+X6+X5+X4+X2+1个

{2,3}

{2,7}

{2,13}

{2,25}

{2,61}

{2,115}

{2,253}

{2,501}

{2,1019}

{2,2041}

{2,4073}

{2,8137}

{2,16381}

{2,32743}

{2,65533}

{2,131053}

{2,262127}

{2,524263}

{2,1048531}

{2,2097145}

{2,4194227}

{2,8388589}

{2,16777213}

{2,33554351}

{2,67108849}

{2,134217697}

{2,268435427}

{2,536870805}

{2,1073741801}

{2,2147483533}

{2,4294967287}

{2,8589934581}

很好 我期待Jelly版本:)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.