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}