pub trait PrimeSet: Sized + Sync + Send + 'static {
const Q: [u32; 4];
const OMEGA: [u32; 4];
const CRT_CST: [u32; 4];
const LOG_Q: u64;
}
pub struct Primes29;
impl PrimeSet for Primes29 {
const Q: [u32; 4] = [
(1u32 << 29) - 2 * (1u32 << 17) + 1, (1u32 << 29) - 5 * (1u32 << 17) + 1, (1u32 << 29) - 26 * (1u32 << 17) + 1, (1u32 << 29) - 35 * (1u32 << 17) + 1, ];
const OMEGA: [u32; 4] = [78_289_835, 178_519_192, 483_889_678, 239_808_033];
const CRT_CST: [u32; 4] = [301_701_286, 536_020_447, 86_367_873, 147_030_781];
const LOG_Q: u64 = 29;
}
pub struct Primes30;
impl PrimeSet for Primes30 {
const Q: [u32; 4] = [
(1u32 << 30) - 2 * (1u32 << 17) + 1, (1u32 << 30) - 17 * (1u32 << 17) + 1, (1u32 << 30) - 23 * (1u32 << 17) + 1, (1u32 << 30) - 42 * (1u32 << 17) + 1, ];
const OMEGA: [u32; 4] = [1_070_907_127, 315_046_632, 309_185_662, 846_468_380];
const CRT_CST: [u32; 4] = [43_599_465, 292_938_863, 594_011_630, 140_177_212];
const LOG_Q: u64 = 30;
}
pub struct Primes31;
impl PrimeSet for Primes31 {
const Q: [u32; 4] = [
(1u32 << 31) - (1u32 << 17) + 1, (1u32 << 31) - 4 * (1u32 << 17) + 1, (1u32 << 31) - 11 * (1u32 << 17) + 1, (1u32 << 31) - 23 * (1u32 << 17) + 1, ];
const OMEGA: [u32; 4] = [1_615_402_923, 1_137_738_560, 154_880_552, 558_784_885];
const CRT_CST: [u32; 4] = [1_811_422_063, 2_093_150_204, 164_149_010, 225_197_446];
const LOG_Q: u64 = 31;
}