在pari-gp中,如何找到有限域的本原元素?
In pari-gp, how to find a primitive element of finite field?
比如说,我想要一个包含 q^n
个元素的有限域,用于某些 prime q
和 positive n
。如何得到它的原始元素?
您可以使用以下代码获取一些原始元素:
var = 'x; \ sets a variable in the polynomial representation of finite field
f = ffgen(ffinit(q, n)); \ GF(q^n) ~ GF(q)[x]/<f(x)>. Note `f` is just an irreducible
a = ffprimroot(f); \ gets a root `a` of `f`
poly = minpoly(a, var); \ finds a minimal polynomial for `a`
primitive_elt = ffgen(poly, var); \ finds a root of the minimal polynomial
\ assertion: check the order
fforder(primitive_elt) == q^n-1
请注意,有限域可以具有某些原始元素。上面的代码找到随机的任何。请注意,上面的代码假定 n
> 1。否则,函数 minpoly
会崩溃(使用 PARI/GP 2.7.2 32 位测试)。
比如说,我想要一个包含 q^n
个元素的有限域,用于某些 prime q
和 positive n
。如何得到它的原始元素?
您可以使用以下代码获取一些原始元素:
var = 'x; \ sets a variable in the polynomial representation of finite field
f = ffgen(ffinit(q, n)); \ GF(q^n) ~ GF(q)[x]/<f(x)>. Note `f` is just an irreducible
a = ffprimroot(f); \ gets a root `a` of `f`
poly = minpoly(a, var); \ finds a minimal polynomial for `a`
primitive_elt = ffgen(poly, var); \ finds a root of the minimal polynomial
\ assertion: check the order
fforder(primitive_elt) == q^n-1
请注意,有限域可以具有某些原始元素。上面的代码找到随机的任何。请注意,上面的代码假定 n
> 1。否则,函数 minpoly
会崩溃(使用 PARI/GP 2.7.2 32 位测试)。