haar_lib/math/
prime_mod.rs

1//! 素数剰余用
2
3use crate::math::primitive_root::primitive_root;
4
5/// 素数剰余用
6pub trait PrimeMod: Sized + Copy + Clone + PartialEq + Default {
7    /// 素数
8    const PRIME_NUM: u32;
9    /// 原始根
10    const PRIM_ROOT: u32;
11}
12
13/// 素数`P`での剰余
14#[derive(Copy, Clone, PartialEq, Eq, Debug, Default, PartialOrd, Ord, Hash)]
15pub struct Prime<const P: u32>;
16impl<const P: u32> PrimeMod for Prime<P> {
17    const PRIME_NUM: u32 = P;
18    const PRIM_ROOT: u32 = primitive_root(P);
19}