mark[]:p=0,c=1(except for evens);
*********************************/
const int MAXP=10000000;
int pri[MAXP],cnt;
bool mark[MAXP];
int setp() {
int i,j;
cnt=1,pri[0]=2;
for(i=3;i<MAXP;i+=2){
if(!mark[i])pri[cnt++]=i;
for(j=1;j<cnt && pri[j]*i<MAXP;++j){
mark[i*pri[j]]=1;
if(!(i%pri[j]))break;
}
}
return cnt;
}