Выбрать из последовательности все простые числа методом Эратосфена - Turbo Pascal
Формулировка задачи:
Решение задачи: «Выбрать из последовательности все простые числа методом Эратосфена»
uses crt;
const n=255;
var n1, next, i : integer;
BeginSet, PrimerSet:set of 1 .. N;
begin
clrscr;
BeginSet:=[2..n]; { начальное множество }
PrimerSet:=[2]; { это множество простых чисел, в нём первое простое число 1}
next:=2; {следующее простое }
while BeginSet <> [] do
begin
n1:=next;
{ исключаем все числа кратные next }
while n1<=n do
begin
Exclude(BeginSet,n1);
n1:=n1+next
end;
{ включаем next в множество }
Include (PrimerSet, next);
{получаем в next следующее простое, которое есть первое в BeginSet}
repeat
next:=next+1
until (next in BeginSet) or (next >n)
end;
for i:=1 to N do
if i in PrimerSet then
write (i:4);
readln
end.
Объяснение кода листинга программы
Данный код написан на языке Turbo Pascal и решает задачу выбора всех простых чисел из последовательности методом Эратосфена. В начале кода объявляются необходимые переменные: n - максимальное число в последовательности, BeginSet - множество, в котором находятся числа, PrimerSet - множество, содержащее простые числа. Далее происходит инициализация BeginSet и PrimerSet: BeginSet устанавливается в диапазон от 2 до n, а PrimerSet устанавливается в начало этого диапазона (так как первым простым числом является число 1). Затем в цикле while происходит обработка чисел из BeginSet. Для каждого числа n1, которое находится в BeginSet, происходит проверка на кратность следующему простому числу next. Если число n1 кратно next, то оно исключается из BeginSet. Затем next увеличивается на 1 и включается в PrimerSet. Это продолжается до тех пор, пока next не станет больше n или не окажется в BeginSet. После этого в цикле for происходит вывод всех чисел из PrimerSet на экран. Код завершается вызовом readln для чтения последнего числа, введенного пользователем, и выходом из программы.