Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]поиск простых чисел методом решета


Автор: liss87 28.11.2007, 23:17
Здравствуйте.
Помогите,пожалуйста,написать программу.
Требуется разработать программу для поиска простых чисел в заданном промежутке,верхняя и нижняя границы которого заданы.(например,передаются через командную строку)
Поиск должен осуществляться по методу решета Эрастофена.
Программа должна быть написана на языке С++ с использованием линейного списка.

Алгоритм поиска с помощью решета таков:

Выпишем последовательность всех натуральных чисел от 2 до n. Алгоритм нацелен на то, чтоб вычеркнуть все составные числа. Тогда оставшиеся числа будут простыми. Число 1,как известно, не является ни простым,  ни составным, поэтому в реализации алгоритма не участвует. Будем просматривать последовательность слева направо. Первое попавшееся число-это 2,оно является простым. Далее будем вычеркивать из последовательности каждое второе число, потому что данные числа уже заведомо будут являться составными(потому что уже делятся на 2 ). Следующее невычеркнутое число-3,оно также является простым. Вычеркиваем из оставшейся последовательности каждое третье число. 4 будет вычеркнуто как четное(действительно,4-составное число). Следующее невычеркнутое число-5,вычеркиваем каждое пятое число. Затем вычеркиваем каждое седьмое число, каждое одиннадцатое и так далее до тех пор, пока не будут вычеркнуты все составные числа.

Как я понимаю,для этого решета создается определенное количество объектов класса List,а при вычеркинвании из решета составных чисел динамически освобождается память,и список с каждой итерацией становится все меньше и меньше.
заранее спасибо.

Автор: GIK 29.11.2007, 11:43
Цитата

Далее будем вычеркивать из последовательности каждое второе число, 

Чет я смысла этих действий не могу понять. каждое второе, каждое третье??? для чего, и в чем логика? Другое дело просто написать алгоритм который отбрасывает все составные числа. Не понимаю я чет smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)