58 for (std::size_t i = 0; i < data.size(); ++i) {
60 for (std::size_t j = 0; j + 1 < data.size() - i; ++j) {
61 if (data[j + 1] < data[j]) {
62 std::swap(data[j], data[j + 1]);
89 for (std::size_t i = 1; i < data.size(); ++i) {
92 while (j > 0 && key < data[j - 1]) {
93 data[j] = data[j - 1];
120 if (n <= 1)
return n;
121 std::uint64_t a = 0, b = 1;
122 for (
unsigned i = 2; i <= n; ++i) {
123 std::uint64_t c = a + b;
147inline unsigned gcd(
unsigned a,
unsigned b) {
171 if (n < 2)
return false;
172 if (n < 4)
return true;
173 if (n % 2 == 0 || n % 3 == 0)
return false;
174 for (
unsigned i = 5; i * i <= n; i += 6) {
175 if (n % i == 0 || n % (i + 2) == 0)
return false;
190T
sum(
const std::vector<T>& data) {
191 return std::accumulate(data.begin(), data.end(), T{});
bool is_prime(unsigned n)
Test whether a number is prime.
std::uint64_t fibonacci(unsigned n)
Compute the -th Fibonacci number.
T sum(const std::vector< T > &data)
Compute the sum of all elements in a range.
void insertion_sort(std::vector< T > &data)
Sort a vector in-place using insertion sort.
void bubble_sort(std::vector< T > &data)
Sort a vector in-place using bubble sort.
unsigned gcd(unsigned a, unsigned b)
Compute the greatest common divisor of two integers.