задача:найти все простые числа не превосходящие заданного 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)Удалить из множества А все непростые(составные) числа. Для этого берем первое число из этого множества (а оно простое) и удаляем из множества все числа кратные этому числу. Так повторять, пока не переберем все числа из данного множества. Получится множество
, хранящее только простые числа.
Собственно надо исправить код программы под написанный выше алгоритм решения задачи. Нужно проводить операции над этим множеством А, но я затрудняюсь сделать это, дабы не сильно усложнить код программы, что для меня не допустимо...

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