Pagini recente » Cod sursa (job #1481318) | Cod sursa (job #1745566) | Cod sursa (job #19461) | Cod sursa (job #493941) | Cod sursa (job #545975)
Cod sursa(job #545975)
# include <stdio.h>
int n,urm[200001],a[200001],i;
void gen(int n)
{
int i,j;
if (n<=1) return;
for (i=0; i<=n; i++) urm[i]=0;
if (n==2)
{
urm[0]=2;
urm[2]=-1;
return;
}
if (n==3)
{
urm[0]=2;
urm[2]=3;
urm[3]=-1;
return;
}
gen(n/2);
for (a[1]=1,i=2; i<=n; i++)
{
j=a[i];
while (j!=-1 && i*j<=n)
{
a[i*j]=j;
j=urm[j];
}
}
for (j=0,i=1; i<=n; i++)
if (!a[i]) urm[j]=i,j=i;
urm[j]=-1;
}
int main ()
{
freopen ("ciur.in","r",stdin);
freopen ("ciur.out","w",stdout);
scanf ("%d\n",&n);
gen (n);
int nr=0;
for (i=urm[0]; i!=-1; i=urm[i]) nr++;
printf ("%d\n",nr);
return 0;
}