function isMinimalPolynomial(f, p, k) {
const fullF = [...f, -1];
if (_.range(p).some((n) => applyPolynomial(fullF, n, p) === 0)) {
return false;
}
let g = [1];
for (const j of _.range(1, p ** k - 1)) {
g = reducePolynomial([0, ...g], p, k, f);
if (_.isEqual(g, [1])) {
return false;
}
}
return true;
}