From Handwiki In finite field theory, a branch of mathematics, a primitive polynomial is the minimal polynomial of a primitive element of the finite field GF(pm). This means that a polynomial F(X) of degree m with coefficients in GF(p) = Z/pZ is a primitive polynomial if it is monic and has a root α in GF(pm) such that [math]\displaystyle{ \{0,1,\alpha, \alpha^2,\alpha^3, \ldots \alpha^{p^m-1}\} }[/math] is the entire field GF(pm). This implies that α is a primitive (pm − 1)-root of unity in GF(pm).
Primitive polynomials can be used to represent the elements of a finite field. If α in GF(pm) is a root of a primitive polynomial F(x), then the nonzero elements of GF(pm) are represented as successive powers of α:
This allows an economical representation in a computer of the nonzero elements of the finite field, by representing an element by the corresponding exponent of [math]\displaystyle{ \alpha. }[/math] This representation makes multiplication easy, as it corresponds to addition of exponents modulo [math]\displaystyle{ p^m-1. }[/math]
Primitive polynomials over GF(2), the field with two elements, can be used for pseudorandom bit generation. In fact, every linear-feedback shift register with maximum cycle length (which is 2n − 1, where n is the length of the linear-feedback shift register) may be built from a primitive polynomial.[1]
In general, for a primitive polynomial of degree m over GF(2), this process will generate 2m − 1 pseudo-random bits before repeating the same sequence.
The cyclic redundancy check (CRC) is an error-detection code that operates by interpreting the message bitstring as the coefficients of a polynomial over GF(2) and dividing it by a fixed generator polynomial also over GF(2); see Mathematics of CRC. Primitive polynomials, or multiples of them, are sometimes a good choice for generator polynomials because they can reliably detect two bit errors that occur far apart in the message bitstring, up to a distance of 2n − 1 for a degree n primitive polynomial.
A useful class of primitive polynomials is the primitive trinomials, those having only three nonzero terms: xr + xk + 1. Their simplicity makes for particularly small and fast linear-feedback shift registers.[2] A number of results give techniques for locating and testing primitiveness of trinomials.[3]
For polynomials over GF(2), where 2r − 1 is a Mersenne prime, a polynomial of degree r is primitive if and only if it is irreducible. (Given an irreducible polynomial, it is not primitive only if the period of x is a non-trivial factor of 2r − 1. Primes have no non-trivial factors.) Although the Mersenne Twister pseudo-random number generator does not use a trinomial, it does take advantage of this.
Richard Brent has been tabulating primitive trinomials of this form, such as x74207281 + x30684570 + 1.[4][5] This can be used to create a pseudo-random number generator of the huge period 274207281 − 1 ≈ 3×1022338617.
![]() |
Categories: [Field (mathematics)] [Polynomials]
ZWI signed: