Cod sursa(job #2348099)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 19 februarie 2019 13:01:31
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include<cstdio>
int n,i,j,k,l,o;
char p[2000001],r[8];
int A()
{
  	int s=0;
  	for(;r[o]<'0'||r[o]>'9';o++);
  	for(;r[o]>='0'&&r[o]<='9';o++)
  		s=s*10+r[o]-'0';
  	return s;
}
void S(int b)
{
    char e[100];
    int j;
    for(j=0;b;b/=10,j++)
        e[j]=b%10+48;
    for(j--;j>=0;j--)
        r[l++]=e[j];
}
int main()
{
	freopen("ciur.in","r",stdin),freopen("ciur.out","w",stdout),fread(r,1,8,stdin),n=A();
	for(i=1;((i*i)<<1)+(i<<1)<=n;i++)
		if(!(p[i>>3]&(1<<(i&7))))
   			for(j=((i*i)<<1)+(i<<1);(j<<1)+1<=n;j+=(i<<1)+1)
        		p[j>>3]|=(1<<(j&7));
	for(i=1;2*i+1<=n;i++)
		if(!(p[i>>3]&(1<<(i&7))))
   			k++;
    S(k+1),fwrite(r,1,l,stdout);
}