Pagini recente » Cod sursa (job #2439179) | Cod sursa (job #2717690) | Cod sursa (job #172711) | Cod sursa (job #2118919) | Cod sursa (job #1892497)
#include <stdio.h>
#include <stdbool.h>
#define MAXSIZE 4000001
#define S 6
#define U 1
long long i,n,p,j,j2,i1,i2,i22,i11,k;
int m=2,s;
bool a[MAXSIZE];
int main()
{
freopen("ciur.in", "r", stdin);
freopen("ciur.out", "w", stdout);
scanf("%d", &n);
//500000000; => 4s
//500000000; => 3.6s
// n=500000000;
for(i= S ; i <=n ; i += S)
{
i1 = i - U;
i2 = i + U;
if(a [ i1 ] ==0)
{
m++;
if( a [ i2 ] == 0)
{
m++;
k=n /i1;
for(j= i-1 ; (j) <=k ; j += S)
{
a[(j+2)*i1] = 1;
a[(j)*i1] = 1;
a[(j+2)*i2] = 1;
a[(j)*i2] = 1;
}
}
else
{ k=n /i1;
for(j= i -1 ; j <=k ; j += S)
{
a[(j+2)*i1] = 1;
a[j*i1] = 1;
}
}
}
else if( a [ i2 ] == 0)
{
m++;
k=n /i2;
for(j= i -1 ; j <=k ; j += S)
{
a[(j+2)*i2] = 1;
a[j*i2] = 1;
}
}
}
/*
for(i= S ; i <=n ; i += S)
{
i1 = i - U;
i2 = i + U;
if(! a [ i1 ])
{
m++;
i11 = i1*S;
for( j =i11 + i1, j2 = i1 * i1 ; j<= n; j += i11, j2 += i11 )
{
a[j]=1;
if( j2 <= n)
{
a[j2]=1;
}
}
}
if(! a [ i2 ] )
{ m++;
i22 = i2*S;
for(j = i22 + i2 ; j <= n ; j += i22)
{
a[j]=1;
}
}
}
*/
printf("%d\n" , m);
return 0;
}