|
|
|
|
|
|
|
|
uint32_t select(size_t n) const { return primes[n & 0xff]; } |
|
|
uint32_t select(size_t n) const { return primes[n & 0xff]; } |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const PrimeSet Primes { |
|
|
const PrimeSet Primes { |
|
|
4294961843, 4294961861, 4294961863, 4294961873, 4294961893, 4294961897, 4294961921, 4294961927, |
|
|
|
|
|
4294961941, 4294961959, 4294961963, 4294962019, 4294962047, 4294962079, 4294962137, 4294962151, |
|
|
|
|
|
4294962211, 4294962223, 4294962233, 4294962271, 4294962277, 4294962299, 4294962313, 4294962341, |
|
|
|
|
|
4294962349, 4294962367, 4294962377, 4294962389, 4294962391, 4294962401, 4294962409, 4294962449, |
|
|
|
|
|
4294962473, 4294962499, 4294962533, 4294962541, 4294962589, 4294962619, 4294962629, 4294962641, |
|
|
|
|
|
4294962653, 4294962689, 4294962691, 4294962703, 4294962719, 4294962731, 4294962751, 4294962757, |
|
|
|
|
|
4294962779, 4294962809, 4294962817, 4294962827, 4294962853, 4294962887, 4294962899, 4294962911, |
|
|
|
|
|
4294962929, 4294962953, 4294963039, 4294963051, 4294963093, 4294963097, 4294963111, 4294963117, |
|
|
|
|
|
|
|
|
|
|
|
4294963171, 4294963237, 4294963291, 4294963313, 4294963333, 4294963349, 4294963369, 4294963427, |
|
|
|
|
|
4294963429, 4294963459, 4294963499, 4294963523, 4294963537, 4294963553, 4294963571, 4294963583, |
|
|
|
|
|
4294963619, 4294963637, 4294963639, 4294963643, 4294963667, 4294963681, 4294963723, 4294963747, |
|
|
|
|
|
4294963781, 4294963787, 4294963847, 4294963853, 4294963891, 4294963901, 4294963921, 4294963943, |
|
|
|
|
|
4294963957, 4294963987, 4294963993, 4294964017, 4294964027, 4294964029, 4294964039, 4294964081, |
|
|
|
|
|
4294964123, 4294964131, 4294964159, 4294964173, 4294964203, 4294964207, 4294964209, 4294964213, |
|
|
|
|
|
4294964221, 4294964239, 4294964249, 4294964257, 4294964263, 4294964281, 4294964287, 4294964309, |
|
|
|
|
|
4294964327, 4294964341, 4294964381, 4294964419, 4294964437, 4294964441, 4294964461, 4294964489, |
|
|
|
|
|
|
|
|
|
|
|
4294964491, 4294964521, 4294964537, 4294964543, 4294964561, 4294964579, 4294964599, 4294964621, |
|
|
|
|
|
4294964633, 4294964683, 4294964689, 4294964749, 4294964771, 4294964789, 4294964809, 4294964827, |
|
|
|
|
|
4294964833, 4294964879, 4294964887, 4294964893, 4294964897, 4294964899, 4294964903, 4294964923, |
|
|
|
|
|
4294964929, 4294964939, 4294964959, 4294964969, 4294964977, 4294964981, 4294965019, 4294965131, |
|
|
|
|
|
4294965137, 4294965151, 4294965161, 4294965193, 4294965203, 4294965229, 4294965251, 4294965263, |
|
|
|
|
|
4294965307, 4294965313, 4294965331, 4294965347, 4294965361, 4294965383, 4294965413, 4294965457, |
|
|
|
|
|
4294965461, 4294965487, 4294965529, 4294965581, 4294965601, 4294965613, 4294965617, 4294965641, |
|
|
|
|
|
4294965659, 4294965671, 4294965673, 4294965679, 4294965683, 4294965691, 4294965721, 4294965733, |
|
|
|
|
|
|
|
|
|
|
|
4294965737, 4294965757, 4294965767, 4294965793, 4294965821, 4294965839, 4294965841, 4294965847, |
|
|
|
|
|
4294965887, 4294965911, 4294965937, 4294965949, 4294965967, 4294965971, 4294965977, 4294966001, |
|
|
|
|
|
4294966007, 4294966043, 4294966073, 4294966087, 4294966099, 4294966121, 4294966129, 4294966153, |
|
|
|
|
|
4294966163, 4294966177, 4294966187, 4294966217, 4294966231, 4294966237, 4294966243, 4294966297, |
|
|
|
|
|
4294966337, 4294966367, 4294966373, 4294966427, 4294966441, 4294966447, 4294966477, 4294966553, |
|
|
|
|
|
4294966583, 4294966591, 4294966619, 4294966639, 4294966651, 4294966657, 4294966661, 4294966667, |
|
|
|
|
|
4294966769, 4294966813, 4294966829, 4294966877, 4294966909, 4294966927, 4294966943, 4294966981, |
|
|
|
|
|
4294966997, 4294967029, 4294967087, 4294967111, 4294967143, 4294967161, 4294967189, 4294967197 |
|
|
|
|
|
|
|
|
2781111551, 4115761697, 2188512439, 3902941499, 4078728127, 2919449173, 3950407729, 4081733563, |
|
|
|
|
|
4061783399, 2728829231, 3557004557, 3778858159, 2397085727, 3808921189, 3159484147, 4084759639, |
|
|
|
|
|
2938297727, 3839623429, 2441361773, 2471079053, 4270995293, 3336967261, 2717746523, 3306593077, |
|
|
|
|
|
2846319523, 2704420699, 2772002447, 2664263209, 3452941517, 3422898851, 2502691043, 3785866613, |
|
|
|
|
|
3164194337, 3348481009, 3448873073, 2340666883, 3742418039, 2298597811, 3061650257, 4286896921, |
|
|
|
|
|
2816281231, 3814879819, 3245870963, 2718113173, 3051925081, 2527351147, 2737897993, 3567396421, |
|
|
|
|
|
3422709179, 3542178331, 3740214493, 3720784621, 2821606727, 3764267237, 3923068349, 3880303043, |
|
|
|
|
|
3816527917, 3032326837, 4006470463, 4165427173, 2511539731, 2993685649, 2268550831, 2899250059, |
|
|
|
|
|
2432655553, 3959959639, 4142838449, 4100124029, 2962655827, 2648245423, 4117297801, 3331059481, |
|
|
|
|
|
2287716593, 4115533181, 2411037073, 3273978871, 2395052183, 2776949353, 3871801559, 2948305931, |
|
|
|
|
|
2257427881, 4288176181, 2624064151, 3144150523, 4282472071, 2206613407, 2960685401, 2761304627, |
|
|
|
|
|
3187632967, 2447380627, 2781789473, 3657272401, 3603710699, 4042745507, 4087095841, 2354409557, |
|
|
|
|
|
2239000559, 4164370321, 3636939347, 3622573529, 2202257819, 2792364713, 2803311809, 4006899277, |
|
|
|
|
|
2835975767, 2951997809, 3185753917, 2417651723, 2631379747, 2175388331, 4277708983, 3547799261, |
|
|
|
|
|
3093003779, 3653208029, 4084095199, 3161669417, 2698224923, 2746404013, 3209829191, 3024118079, |
|
|
|
|
|
3799471327, 3012753409, 2653321639, 2777700139, 3794895031, 3075822329, 2774150557, 3135465059, |
|
|
|
|
|
2294247001, 3557999149, 3189799397, 4080431539, 3397276529, 3931450153, 3518901437, 3135266501, |
|
|
|
|
|
3275906693, 4143264221, 3439131923, 2462856037, 2441331799, 2640219781, 3504419027, 3721296989, |
|
|
|
|
|
3434920081, 2852097271, 3199425679, 3785517557, 2984788193, 3678788947, 2308371491, 3354456173, |
|
|
|
|
|
4148931503, 3239885063, 3894052103, 3930187787, 3521437319, 3203332001, 2894779337, 4197047957, |
|
|
|
|
|
3080099353, 2304447583, 3731998477, 2733978179, 2235339121, 2490436339, 2147689987, 3276115639, |
|
|
|
|
|
3923204273, 3402325321, 3082785493, 3420863399, 3203562407, 2292225781, 3461192447, 2589852949, |
|
|
|
|
|
2772559931, 3667144931, 2163126419, 3412216831, 3699715037, 3619099453, 3875532569, 3047225267, |
|
|
|
|
|
3780456941, 2512094297, 3527794547, 3130190737, 3013107347, 3691645577, 3877430399, 4270767517, |
|
|
|
|
|
2797247227, 3976455169, 3541991143, 3737016677, 3801675821, 2233908737, 3210598117, 4200595549, |
|
|
|
|
|
2772203789, 2415614503, 2467043143, 2611954561, 2791210277, 2599276769, 4034287091, 3521719193, |
|
|
|
|
|
3060219497, 2799601709, 2178939557, 3800717749, 3426533269, 3519387097, 2861815447, 2884852603, |
|
|
|
|
|
2814915449, 3359572921, 3013763303, 3565679363, 3491538893, 2588490083, 3441048649, 2501343701, |
|
|
|
|
|
4191701149, 2251607773, 3543948791, 3511969763, 2966565907, 3640359409, 3640516129, 2586869203, |
|
|
|
|
|
2328651011, 4037640461, 3601356797, 4260950119, 3198526459, 3478546597, 3009442531, 3594323353, |
|
|
|
|
|
3205141207, 3592422991, 3357971081, 3217249313, 2903534827, 3716714951, 3388800011, 3045269987, |
|
|
|
|
|
2325616213, 2688355151, 3022034467, 4221197753, 2426944493, 3090262709, 3471570467, 2437347167 |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
uint64_t engine( |
|
|
uint64_t engine( |