Pagini recente » Cod sursa (job #1405431) | Cod sursa (job #1468894) | Cod sursa (job #1974327) | Cod sursa (job #1354002) | Cod sursa (job #1013267)
#include <stdio.h>
#include <stdbool.h>
#define MAXSIZE 2000002
bool a[MAXSIZE];
void markup(bool a[],long long i, long long i11,long n)
{ long long j,j2;
for( j =i11+i; j<= n; j += i11 )
{
a[j]=true;}
for(j2 = i*i;j2 <= n;j2 += i11 )
{
a[j2]=true;
}
}
void markdown(bool a[],long long i, long long i22,long n)
{
long long j;
for(j =i*i ; j <= n ; j += i22)
a[j]=true;
}
int sieve(long n)
{
long p,i,m=2;
p=n/7;
for( i= 6 ; i <=p ; i += 6)
{
if(! a [ i-1 ])
{
m++;
markup(a,i-1,(i-1)*6,n+2);
}
if(! a [ i+1 ]){ m++;
markdown(a,i+1,(i+1)*6,n+2);
}
}
for(;i<n;i+=6,m+=!a[i+1]+!a[i-1]);
if(n%6==0)
return m+!a[n-1];
else
if((n+1)%6==0)
return m+!a[n];
return m;
}
int main()
{
int n;
//freopen("ciur.in","r",stdin);
//freopen("ciur.out","w",stdout);
//scanf("%i",&n);
n=17;
printf("%i",sieve(n));
return 0;
}