primitiveRootOfPrime function
Returns the primitive root of n
, where n
is a prime > 2.
Implementation
int primitiveRootOfPrime(int n) {
int e = n - 1;
final d = primeFactors(e);
for (int i = 0; i < d.length; ++i) {
d[i] = e ~/ d[i];
}
for (int g = 2;; ++g) {
bool allNot1 = true;
for (final k in d) {
if (expMod(g, k, n) == 1) {
allNot1 = false;
break;
}
}
if (allNot1) return g;
}
}