#include <stdio.h>
//#include <ctime>
#define max_step 33333333
#define max_step2 33333380
#define max_step3 33333332
#define n 2147483647
#define d 1234567890
#define nn 1073741823
#define _d 235249369
char npr[46340];
char prime[max_step2];
int main()
{
#ifdef pperm
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int i,j,ti;
for (i=3;i<46340;i+=2)
if (!npr[i])
{
j=(i<<1)+i;
while (j<46340)
{
npr[j]=1;
j+=i<<1;
}
if (i>80)
{
rep: ti=(((j-1)>>1)*_d)&nn;
if (ti<max_step)
prime[ti]='0';
j+=i<<1;
if (j<0)
continue;
goto rep;
}
}
int a;
a=1277200225;
for (i=48;i<33333332;)
{
if (a%41)
{
a=(a+1556220022)&n;
i+=3;
}
else
{
a=(a+321652132)&n;
i+=2;
}
prime[i-1]=prime[i-2]='0';
if (a%41)
{
a=(a+85264668)&n;
i+=94;
}
else
{
prime[i]='0';
a=(a+1319832558)&n;
i+=95;
}
}
for (i=6;i<161;i+=7)
prime[i]='0';
a=24405659;
for (i=581;i<33333332;)
{
if (a%17)
{
a=(a+38223148)&n;
i+=294;
}
else
{
a=(a+2133666158)&n;
i+=287;
}
for (j=7;j<288;j+=7)
prime[i-j]='0';
if (a%17)
{
a=(a+2105441246)&n;
i+=407;
}
else
{
prime[i]='0';
a=(a+9998236)&n;
i+=414;
}
}
a=23815727;
for (i=127;i<33333332;)
{
if (a%13)
{
a=(a+38223148)&n;
i+=294;
}
else
{
a=(a+2133666158)&n;
i+=287;
}
for (j=7;j<288;j+=7)
prime[i-j]='0';
if (a%13)
{
a=(a+2143074462)&n;
i+=247;
}
else
{
prime[i]='0';
a=(a+47631452)&n;
i+=254;
}
}
a=321652133;
for (i=2;i<33333332;)
{
if (a%11)
{
a=(a+94672972)&n;
i+=54;
}
else
{
a=(a+1868463850)&n;
i+=45;
}
for (j=9;j<46;j+=9)
prime[i-j]='0';
if (a%11)
{
a=(a+1877872154)&n;
i+=5;
}
else
{
prime[i]='0';
a=(a+104081276)&n;
i+=14;
}
}
a=1556220023;
for (i=3;i<33333332;)
{
if (a%19)
{
a=(a+1286608528)&n;
i+=8;
}
else
{
a=(a+643304264)&n;
i+=4;
}
prime[i-4]='0';
if (a%19)
{
a=(a+156121914)&n;
i+=21;
}
else
{
prime[i]='0';
a=(a+799426178)&n;
i+=25;
}
}
a=643304265;
for (i=4;i<33333332;)
{
if (a%5)
{
a=(a+321652132)&n;
i+=2;
}
else
{
a=(a+1234567890)&n;
i++;
}
prime[i-1]='0';
if (a%5)
{
a=(a+964956396)&n;
i+=6;
}
else
{
prime[i]='0';
a=(a+52040638)&n;
i+=7;
}
}
a=1;
prime[0]=prime[33333332]='0';
prime[33333333]=0;
for (i=1;i<max_step3;i++)
{
a=(a+d)&n;
if (!prime[i])
prime[i]=(a<46340)?npr[a]?'0':'1':(a%3&&a%7&&a%23&&a%29&&a%31&&
a%37&&a%43&&a%47&&a%53&&a%59&&a%61&&a%67&&a%71&&a%73&&a%79)?'1':'0';
}
//printf("%d",clock());
printf("%s",prime);
return 0;
}
|