Простые числа. Решето Эратосфена
Перейти к навигации
Перейти к поиску
O(NloglogN)
const int N = 1000010;
static bool p[N];
for (int i = 2; i < N; i++)
if (!p[i] && 1LL * i * i < N)
for (int j = i * i; j < N; j += i)
p[j] = 1;
O(N)
const int N = 1000010;
vector<int> primes;
static int minDivisor[N];
for (int i = 2; i < N; i++) {
if (!minDivisor[i]) {
minDivisor[i] = i;
primes.push_back(i);
}
for (int j = 0; j < primes.size() && primes[j] <= minDivisor[i] && 1LL * i * primes[j] < N; j++)
minDivisor[i * primes[j]] = primes[j];
}
Ссылки на задачи
Ссылки
- E-Maxx — Решето Эратосфена
- E-Maxx — Решето Эратосфена с линейным временем работы
- Brestprog — Разложение числа на простые множители (факторизация). Делители числа
- Brestprog — Решето Эратосфена
- informatics.mccme.ru — Курс «Арифметика и числовые алгоритмы» — часть 1
- CodeLibrary — Prime numbers, sieve of Eratosthenes, Euler's totient function