Я пытаюсь сгенерировать последовательность простых чисел, начиная с N до N_Max в C++. Мой подход заключается в использовании Решета Эратосфена для создания этих простых чисел:Сито эратосфена с диапазоном
void runEratosthenesSieve(int upperBound) {
int upperBoundSquareRoot = (int)sqrt((double)upperBound);
bool *isComposite = new bool[upperBound + 1];
memset(isComposite, 0, sizeof(bool) * (upperBound + 1));
for (int m = 2; m <= upperBoundSquareRoot; m++) {
if (!isComposite[m]) {
cout << m << " ";
for (int k = m * m; k <= upperBound; k += m)
isComposite[k] = true;
}
}
for (int m = upperBoundSquareRoot; m <= upperBound; m++)
if (!isComposite[m])
cout << m << " ";
delete [] isComposite;
}
Однако эта функция отходы памяти пути вычисления простых чисел от 1 до N. Есть ли функция, которая будет работать быстрее и занимает меньше памяти?
Вам может понравиться мой ответ на [этот вопрос] (http://stackoverflow.com/questions/10249378/segmented-sieve-of-eratosthenes), который генерирует только простые числа в заданном диапазоне. – user448810
Его в phyton, я постараюсь перевести, но спасибо anw! –
На самом деле это не Python, а своего рода псевдокод. – user448810