| 157 | // Greatest Common Divisor. |
| 158 | template <typename Number, typename EnableIf = typename std::enable_if_t<std::is_integral_v<Number>, void>> |
| 159 | Number constexpr GCD(Number const a, Number const b) |
| 160 | { |
| 161 | return b == 0 ? a : GCD(b, a % b); |
| 162 | } |
| 163 | |
| 164 | // Least Common Multiple. |
| 165 | template <typename Number, typename EnableIf = typename std::enable_if_t<std::is_integral_v<Number>, void>> |