pub fn primitive_root_prime<T: PrimitiveUnsigned + IsPrime + Factor, const N: usize>( p: T, ) -> Twhere <T as Factor>::FACTORS: Clone + IntoIterator<Item = (T, u8)>,