# galois.is_primitive_root¶

galois.is_primitive_root(g, n)

Determines if $$g$$ is a primitive root modulo $$n$$.

Parameters
• g (int) – A positive integer that may be a primitive root modulo $$n$$.

• n (int) – A positive integer.

Returns

True if $$g$$ is a primitive root modulo $$n$$.

Return type

bool

Notes

$$g$$ is a primitive root if the totatives of $$n$$, the positive integers $$1 \le a < n$$ that are coprime with $$n$$, can be generated by powers of $$g$$. Alternatively said, $$g$$ is a primitive root modulo $$n$$ if and only if $$g$$ is a generator of the multiplicative group of integers modulo $$n$$, $$(\mathbb{Z}/n\mathbb{Z}){^\times} = \{g^0, g^1, g^2, \dots, g^{\phi(n)-1}\}$$ where $$\phi(n)$$ is order of the group. If $$(\mathbb{Z}/n\mathbb{Z}){^\times}$$ is cyclic, the number of primitive roots modulo $$n$$ is given by $$\phi(\phi(n))$$.

Examples

In [1]: galois.is_primitive_root(2, 7)
Out[1]: False

In [2]: galois.is_primitive_root(3, 7)
Out[2]: True

In [3]: galois.primitive_roots(7)
Out[3]: [3, 5]