Вычеркнуть простые числа из последовательности

Помогите составить программу, где будет сначала вводиться граничное число n, потом из этой последовательности натуральных чисел будут вычеркиваться все числа сначала кратные 2ке потом 3ке, потом следующему простому числу, итд. Последовательность должна быть задана в виде односвязного списка
2 ответа

будут вычеркиваться все числа сначала кратные 2ке потом 3ке, потом следующему простому числу
Выбрать из последовательности все простые числа
виде односвязного списка
Динамические структуры данных (списки, очереди, стеки, деревья)


ZX Spectrum-128, ему всё ещё нужно „решето Эратосфена“… Вот, на мой взгляд, то, что хотел ТС:
type
  tList = ^rList;
  rList = record
    n : Integer;
    x : tList;
  end;
 
function CreateList(n : Integer) : tList;
var L, Last : tList;
begin
  Last := nil;
  repeat
    New(L); L^.n := n; L^.x := Last; Last := L;
    dec(n);
  until n = 0;
  CreateList := L;
end;
 
procedure PrintList(L : tList);
begin
  if L = nil then
    Write('Пусто!')
  else while L <> nil do
    begin
      Write(#32, L^.n); L := L^.x;
    end;
  WriteLn;
end;
  
procedure ExcludeList(n : Integer; var L : tList);
var cur, tmp : tList;
begin
  cur := L;
  while cur^.x <> nil do
    if cur^.x^.n mod n = 0 then
      begin
        tmp := cur^.x; cur^.x := tmp^.x;
        Dispose(tmp);
      end
    else
      cur := cur^.x;
end;
 
var
  List : tList;
  n : Integer;
begin
  Read(n);
  List := CreateList(n);
  Write('List: '); PrintList(List);
  while List^.x <> nil do
    begin
      Write(List^.x^.n, ' divisible exclude: ');
      ExcludeList(List^.x^.n, List);
      PrintList(List);
    end;
  WriteLn('The End.');
end.