unsigned int cbpi2(unsigned int x) { unsigned int i,j,k,idx,jdx,sum; static unsigned int skip[] = {4,2,4,2,4,6,2,6}; if (x < 7) return(8*x+2)/13; idx = 0; for (i=7,sum=3;i <= x;i+=skip[idx++],sum += k) { idx &= 7; jdx = 0; for (j=7,k=1;j*j <= i;j += skip[jdx++]) { jdx &= 7; if (i % j) continue; else { k = 0; break; } } } return sum; } unsigned long long pi(unsigned long long x) { return cbpi2(x); }