задача:найти все простые числа не превосходящие заданного N>0.
Вот код:
Код:
#include <stdio.h>
#include <conio.h>
int prost(int k)
{
int x,t;
t=1;
for(x=2; (x<k)&&(t!=0);x++)
   if(k%x==0) t=0;
return t;
}
void main()
{
clrscr();
int t,i,n;
printf ("Vvedite N>0 \n");
scanf("%d",&n);
  if (n<=1)
  printf("Chislo ne yavlyaetcya prostim");
  printf("A= ");
for(i=2;i<=n;i++)
     {
     t=prost(i);
      if (t==1)
      printf("%d ", i);
     }
}
в данном коде нужно использовать 
подпрограмму, что собственно у меня и есть. 
НО! нужно исправить код программы в соответствии с более оптимизированным решением, описанным пока что на словах:
Пусть А - множество натуральных чисел,  ,
, [2,N] (пусть простые числа начинаются с цифры 2)Удалить из множества А все непростые(составные) числа. Для этого берем первое число из этого множества (а оно простое) и удаляем из множества все числа кратные этому числу. Так повторять, пока не переберем все числа из данного множества. Получится множество
[2,N] (пусть простые числа начинаются с цифры 2)Удалить из множества А все непростые(составные) числа. Для этого берем первое число из этого множества (а оно простое) и удаляем из множества все числа кратные этому числу. Так повторять, пока не переберем все числа из данного множества. Получится множество  , хранящее только простые числа.
, хранящее только простые числа.
Собственно надо исправить код программы под написанный выше алгоритм решения задачи. Нужно проводить операции над этим множеством А, но я затрудняюсь сделать это, дабы не сильно усложнить код программы, что для меня не допустимо... 

 Хотя догадываюсь что в этом случае подпрограмма будет называться void ... т.е. без возвращаемого результата, которая будет перебирать числа из множества А и удалять те числа, кратные предыдущим...