Pagini recente » Cod sursa (job #1985012) | Cod sursa (job #795259) | Borderou de evaluare (job #1519766) | Monitorul de evaluare | Cod sursa (job #516375)
Cod sursa(job #516375)
#include<stdio.h>
#include<stdlib.h>
typedef struct nod
{long info;
struct nod *urm;}Nod,*list;
void add(list &l,long x)
{Nod *p,*nou=new Nod;
nou->info=x;
nou->urm=NULL;
if(l==NULL)
{l=nou;
return;}
p=l;
while(p->urm!=NULL)
p=p->urm;
p->urm=nou;}
void del(list &l,long x)
{Nod *p=l,*q=l;
while(p!=NULL&&p->info!=x)
{q=p;
p=p->urm;}
if(p!=NULL)
{if(q==p)
l=l->urm;
else
q->urm=p->urm;
free(p);}}
int find(list &l,long x)
{Nod *p=l;
while(x>p->info&&p!=NULL)
p=p->urm;
if(p->info==x)
return 1;
return 0;}
int main()
{long n,t,j,k,v;
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
list l=NULL;
scanf("%ld",&n);
for(j=2;j<=n;j++)
add(l,j);
k=n-1;
j=2;
v=n;
while(1)
{if(2*j>v)
break;
while(find(l,j)==0)
j++;
t=j;
while(t*j<=v)
{if(find(l,t*j)==1)
{del(l,t*j);
if(t*j==v)
v--;
k--;}
t++;}
j++;}
printf("%ld",k);
return 0;}