#pragma once #include // находит все простые числа от 0 до n // Решето Эратосфена namespace alg { inline std::vector find_primes(int n) { std::vector r; std::vector is_prime(n + 1, true); // 0 и 1 не являются простыми числами is_prime[0] = is_prime[1] = false; // Исключаем все чётные числа, кроме 2 for (int i = 4; i <= n; i += 2) is_prime[i] = false; // Перебираем только нечётные числа, начиная с 3 for (int p = 3; p * p <= n; p += 2) if (is_prime[p]) for (int i = p * p; i <= n; i += 2 * p) is_prime[i] = false; for (int p = 3; p <= n; p += 2) if (is_prime[p]) r.push_back(p); return r; } }