login
Number of conjugacy classes of primitive elements in GF(3^n) which have trace 0.
7

%I #24 Apr 26 2024 12:25:50

%S 0,0,1,2,7,14,52,104,333,870,2571,4590,20440,56736,133782,327558,

%T 1265391,2612694,10188836,20769420,76562106

%N Number of conjugacy classes of primitive elements in GF(3^n) which have trace 0.

%C Also number of primitive polynomials of degree n over GF(3) whose second-highest coefficient is 0.

%F a(n) = A192212(n) / n.

%o (GAP)

%o p := 3;

%o a := function(n)

%o local q, k, cnt, x;

%o q:=p^n; k:=GF(p, n); cnt:=0;

%o for x in k do

%o if Trace(k, GF(p), x)=0*Z(p) and Order(x)=q-1 then

%o cnt := cnt+1;

%o fi;

%o od;

%o return cnt/n;

%o end;

%o for n in [1..16] do Print (a(n), ", "); od;

%o (Sage) # much more efficient

%o p=3; # choose characteristic

%o for n in range(1,66):

%o F = GF(p^n, 'x')

%o g = F.multiplicative_generator() # generator

%o vt = vector(ZZ,p) # stats: trace

%o m = p^n - 1 # size of multiplicative group

%o # Compute all irreducible polynomials via Lyndon words:

%o for w in LyndonWords(p,n): # digits of Lyndon words range form 1,..,p

%o e = sum( (w[j]-1) * p^j for j in range(0,n) )

%o if gcd(m, e) == 1: # primitive elements only

%o f = g^e

%o t = f.trace().lift(); # trace (over ZZ)

%o vt[t] += 1

%o print(vt[0]) # choose index 0,1,..,p-1 for different traces

%o # _Joerg Arndt_, Oct 03 2012

%Y Cf. A152049 (GF(2^n)), A192507 (GF(5^n)), A192509 (GF(7^n)), A192510 (GF(11^n)), A192511 (GF(13^n)).

%Y Cf. A027385 (number of primitive polynomials of degree n over GF(3)).

%K nonn,hard,more

%O 1,4

%A _Joerg Arndt_, Jul 03 2011

%E Added terms >=2571, _Joerg Arndt_, Oct 03 2012

%E a(18)-a(21) from _Robin Visser_, Apr 26 2024