GF(9)或GF(3^2)是最小的有限域,它的阶不是素数或2的幂。素数阶有限域不是特别有趣的领域,GF(2^8) (链接)和GF(2^{64}) (链接)已经面临挑战。
首先定义字段的九个元素。这些必须是从0到255的不同整数,或者它们的代码点所代表的单字节字符.在您的答案中说明您选择的表示形式。
加法和乘法可以实现为函数或程序,接受两个字段元素,产生一个字段元素。
由于字段非常小,所以可以对公理进行详尽的测试,以检查实现或验证加法表和乘法表。
GF(3^2)的元素可以解释为形式P(x)=a x+b在GF(3)上的多项式。( GF(3)=\{0,1,2\}中的加法和乘法是模3的标准整数运算。)
那么GF(3^2)中的加法就是两个多项式的加法。乘法是由两个多项式的乘积定义的,可约模为2次多项式,它是不可约上的GF(3)多项式。
用n=3a+b将多项式映射到整数,并使用不可约多项式x^2+1生成下列加法和乘法表。请注意,这些表还有其他可能的同构。
+ 0 1 2 3 4 5 6 7 8 * 0 1 2 3 4 5 6 7 8
------------------ ------------------
0 | 0 1 2 3 4 5 6 7 8 0 | 0 0 0 0 0 0 0 0 0
1 | 1 2 0 4 5 3 7 8 6 1 | 0 1 2 3 4 5 6 7 8
2 | 2 0 1 5 3 4 8 6 7 2 | 0 2 1 6 8 7 3 5 4
3 | 3 4 5 6 7 8 0 1 2 3 | 0 3 6 2 5 8 1 4 7
4 | 4 5 3 7 8 6 1 2 0 4 | 0 4 8 5 6 1 7 2 3
5 | 5 3 4 8 6 7 2 0 1 5 | 0 5 7 8 1 3 4 6 2
6 | 6 7 8 0 1 2 3 4 5 6 | 0 6 3 1 7 4 2 8 5
7 | 7 8 6 1 2 0 4 5 3 7 | 0 7 5 4 2 6 8 3 1
8 | 8 6 7 2 0 1 5 3 4 8 | 0 8 4 7 3 2 5 1 6使用上表检验分布性:
注意,简单地使用加法和乘法模9是行不通的。
这是暗号高尔夫。分数是用于加法和乘法的函数(或程序)的字节之和。最少字节数获胜。
发布于 2020-01-03 12:41:28
使用数字0到8来表示元素。使用Pari/GP的内建多项式算法。
f(a)=a%3+a\3*x
g(a)=Vecrev(a%(x^2+1),2)%3*[1,3]~
s(a,b)=g(f(a)+f(b))
p(a,b)=g(f(a)*f(b))受达斯汀·G·米克森的回答的启发。
f(a)=a%3+a\3*I
g(a)=[real(a),imag(a)]%3*[1,3]~
s(a,b)=g(f(a)+f(b))
p(a,b)=g(f(a)*f(b))https://codegolf.stackexchange.com/questions/197320
复制相似问题