10template <
unsigned_
integral T>
11 requires internal::type_traits::is_64bit_or_less_v<T>
12constexpr bool miller_rabin(
const T &n,
const T *bases,
const size_t size) {
13 using U = internal::type_traits::safely_multipliable_t<T>;
26 for (
size_t i = 0; i < size; i++) {
32 while (t != n - 1 && y != 1 && y != n - 1) {
36 if (y != n - 1 && t % 2 == 0) {
42template <
unsigned_
integral T>
43 requires internal::type_traits::is_64bit_or_less_v<T>
45 if constexpr (internal::type_traits::is_32bit_or_less_v<T>) {
46 T bases[3] = {2, 7, 61};
49 T bases[7] = {2, 325, 9375, 28178, 450775, 9780504, 1795265022};
constexpr T pow_mod(T b, P p, T mod)
Definition pow_mod.hpp:12
constexpr bool miller_rabin(const T &n, const T *bases, const size_t size)
Definition primality_test.hpp:12
constexpr bool is_prime(T n)
Definition primality_test.hpp:44