Найти простые числа с помощью сита Эратосфена от А до в
привет
я хочу найти простые числа в длительности [a,b].
Пожалуйста, направь меня
большое спасибо.
i want to find prime numbers in [a,b] duration.
Что я уже пробовал:
i want to find prime numbers in [a,b] duration.
этот код находит простые числа в [0, topcandidate]
int FindPrimeUsingSieveOfEratosthenes(int topCandidate = 1000000) { int totalCount = 0; bool *ix = (bool*)(malloc(topCandidate * sizeof(bool))); for(int i = 2 ; i <= topCandidate ; i++) ix[i] = true; ix[0] = ix[1] = false; /* Mark all the non-primes */ int thisFactor = 2; int lastSquare = 0; int thisSquare = 0; while (thisFactor * thisFactor <= topCandidate) { /* Mark the multiples of this factor */ int mark = thisFactor + thisFactor; while (mark <= topCandidate) { ix[mark] = false; mark += thisFactor; } /* Print the proven primes so far */ thisSquare = thisFactor * thisFactor; for (; lastSquare < thisSquare; lastSquare++) { if (ix[lastSquare]) totalCount++; } /* Set thisfactor to next prime */ thisFactor++; while (!ix[thisFactor]) { thisFactor++; } } /* Print the remaining primes */ for (; lastSquare <= topCandidate; lastSquare++) { if (ix[lastSquare]) { totalCount++; } } return totalCount; }
помоги мне что-нибудь изменить ... в этом коде
NotPolitcallyCorrect
Это все еще твое домашнее задание.
Member 12972266
Я специалист по электротехнике .
это не мое домашнее задание!
я люблю математику ...
PIEBALDconsult
Я действительно не понимаю вопроса.
Алгоритм сита требует, чтобы вы начинали с самого начала, а не с середины.
Можно расширить сито - если, скажем, у вас есть сито от 1 до 100 и вы хотите расширить его до 200, вы можете использовать простые числа, которые вы уже нашли, а затем начать с 101.
Но я не вижу способа просто начать с 101 и перейти к 200, не имея набора простых чисел, которые предшествуют этому диапазону.
Вы даже можете иметь базу данных простых чисел, если хотите.
NotPolitcallyCorrect
Ну и что? Какое это имеет отношение к делу?
Member 12972266
спасибо
ее детально ответить