Выбрать из последовательности все простые числа методом Эратосфена - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Всем привет. Нужна помощь в написании одной маленькой программы. Нужно выбрать из последовательности все простые числа методом Эратосфена и при этом необходимо в программе использовать множества. Последовательность от 2 до N. N<255. Заранее спасибо.

Решение задачи: «Выбрать из последовательности все простые числа методом Эратосфена»

textual
Листинг программы
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 для чтения последнего числа, введенного пользователем, и выходом из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы