FiniteFieldElementPrimitiveQ[a]
tests whether a is a primitive element of its ambient field.
FiniteFieldElementPrimitiveQ
FiniteFieldElementPrimitiveQ[a]
tests whether a is a primitive element of its ambient field.
Details
- a is a primitive element of a finite field
if the minimal polynomial of a is primitive and has degree equal to the extension degree of
over
. - A finite field with q elements contains EulerPhi[q-1] primitive elements.
Examples
open all close allBasic Examples (1)
Scope (3)
Test elements of a finite field in polynomial representation:
ℱ = FiniteField[179, 2];FiniteFieldElementPrimitiveQ[ℱ[123]]FiniteFieldElementPrimitiveQ[ℱ[234]]Test elements of a finite field in exponential representation:
ℱ = FiniteField[2, 10, "Exponential"];FiniteFieldElementPrimitiveQ[ℱ[2]]FiniteFieldElementPrimitiveQ[ℱ[4]]Arguments that are not FiniteFieldElement objects yield False:
FiniteFieldElementPrimitiveQ[17]FiniteFieldElementPrimitiveQ[x]Applications (1)
Implement a discrete logarithm function for a given base element:
ℱ = FiniteField[3, 10];
b = ℱ[123]The base element needs to be primitive:
FiniteFieldElementPrimitiveQ[b]Construct a field with exponential element representation using the minimal polynomial of b:
𝒢 = FiniteField[3, MinimalPolynomial[b], "Exponential"]Construct a field isomorphism that maps b to the field generator of :
ℐ = FiniteFieldEmbedding[b -> 𝒢[2]]Define the discrete logarithm function:
dlog[a_] := ℐ[a]["Index"] - 1Compute the discrete logarithm for a nonzero element of ℱ:
dlog[ℱ[456]]b ^ %Properties & Relations (4)
a is a primitive element of its ambient field if every nonzero element of the field is an integer power of a:
ℱ = FiniteField[5, 3];
a = ℱ[123];
FiniteFieldElementPrimitiveQ[a]Information[ℱ, "FieldSize"]Length[Union[a ^ Range[124]]]a is a primitive element of
if it is a generator of
and its minimal polynomial is primitive:
ℱ = FiniteField[59, 6];
a = ℱ[123456];
FiniteFieldElementPrimitiveQ[a]Use MinimalPolynomial to find the minimal polynomial of a:
f = MinimalPolynomial[a, x]This shows that a is a generator of
:
Exponent[f, x] == Information[ℱ, "ExtensionDegree"]Use PrimitivePolynomialQ to show that f is primitive:
PrimitivePolynomialQ[f, 59]The multiplicative order of a primitive element is one less than its ambient field size:
ℱ = FiniteField[1009, 2];
a = ℱ[1017];
FiniteFieldElementPrimitiveQ[a]Information[ℱ, "FieldSize"]Use MultiplicativeOrder to compute the multiplicative order of a:
MultiplicativeOrder[a]A finite field with q elements contains EulerPhi[q-1] primitive elements:
ℱ = FiniteField[11, 5];
Count[FiniteFieldElementPrimitiveQ[ℱ[#]]& /@ Range[0, Information[ℱ, "FieldSize"] - 1], True]EulerPhi[Information[ℱ, "FieldSize"] - 1]Related Guides
History
Text
Wolfram Research (2023), FiniteFieldElementPrimitiveQ, Wolfram Language function, https://reference.wolfram.com/language/ref/FiniteFieldElementPrimitiveQ.html.
CMS
Wolfram Language. 2023. "FiniteFieldElementPrimitiveQ." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FiniteFieldElementPrimitiveQ.html.
APA
Wolfram Language. (2023). FiniteFieldElementPrimitiveQ. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FiniteFieldElementPrimitiveQ.html
BibTeX
@misc{reference.wolfram_2026_finitefieldelementprimitiveq, author="Wolfram Research", title="{FiniteFieldElementPrimitiveQ}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/FiniteFieldElementPrimitiveQ.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_finitefieldelementprimitiveq, organization={Wolfram Research}, title={FiniteFieldElementPrimitiveQ}, year={2023}, url={https://reference.wolfram.com/language/ref/FiniteFieldElementPrimitiveQ.html}, note=[Accessed: 13-June-2026]}